列出一些数据集的索引超出范围?
Posted
技术标签:
【中文标题】列出一些数据集的索引超出范围?【英文标题】:List index out of range with one some data sets? 【发布时间】:2020-01-13 12:49:24 【问题描述】:我正在尝试编写一个数值聚类工具。基本上,我有一个列表(这里称为“产品”),应该从升序列表转换为指示数据集中数字之间链接的列表。读取数据集,删除回车符和连字符都可以,但是根据数据集操作列表给我带来了问题。
# opening file and returning raw data
file = input('Data file: ')
with open(file) as t:
nums = t.readlines()
t.close()
print(f'Raw data: nums')
# counting pairs in raw data
count = 0
for i in nums:
count += 1
print(f'Count of number pairs: count')
# removing carriage returns and hyphens
one = []
for i in nums:
one.append(i.rsplit())
new = []
for i in one:
for a in i:
new.append(a.split('-'))
print(f'Data sets: new')
# finding the range of the final list
my_list = []
for i in new:
for e in i:
my_list.append(int(e))
ran = max(my_list) + 1
print(f'Range of final list: ran')
# setting up the product list
rcount = count-1
product = list(range(ran))
print(f'Unchanged product: product')
for i in product:
for e in range(rcount):
if product[int(new[e][0])] < product[int(new[e][1])]:
product[int(new[e][1])] = product[int(new[e][0])]
else:
product[int(new[e][0])] = product[int(new[e][1])]
print(f'Resulting product: product')
我希望结果是 [0, 1, 1, 1, 1, 5, 5, 7, 7, 9, 1, 5, 5],但是当我遇到“列表索引超出范围”时使用不同的数据集。
用于给出上述期望产品的数据集如下:'1-2\n', '2-3\n', '3-4\n', '5-6\n', ' 7-8\n', '2-10\n', '11-12\n', '5-12\n', '\n'
但是,我面临的最大问题是使用其他数据集。如果没有额外的回车,结果会出现列表索引超出范围错误。
【问题讨论】:
【参考方案1】:我无法完全弄清楚您在这里实际想要做什么。 “表示联系”是什么意思,最终输出是如何做到的?另外,您能否展示一个实际失败的数据集示例?并提供您得到的实际异常?
无论如何,您的代码过于复杂,稍微清理一下也可以解决您的索引问题。使用上面示例中的nums
:
# Drop empty elements, split on hyphen, and convert to integers
pairs = [list(map(int, item.split('-'))) for item in nums if item.strip()]
# You don't need a for loop to count a list
count = len(pairs)
# You can get the maximum element with a nested generator expression
largest = max(item for p in pairs for item in p)
此外,在您的最终循环中,您正在迭代 product
,同时还对其进行就地修改,这往往不是一个好主意。如果我对您要实现的目标有更多了解,我可能会提出更好的方法。
【讨论】:
以上是关于列出一些数据集的索引超出范围?的主要内容,如果未能解决你的问题,请参考以下文章
IndexError:在pyspark shell上使用reduceByKey操作时列出索引超出范围
IndexError:使用beautifulsoup 抓取广告时列出的索引超出范围