我们有元素= 0的此列表 例如:
A = [0 for x in range (35)]
此列表填充了35个零。
我有几个带有范围的列表(大约5个),可以从带有表的文件中使用: 示例:
15 20
20 3
12 5
5 1
7 22
for i in file:
start_elem = min(i[0], i[1])
end_elem = max(i[0], i[1]) #Here it takes the maximum and minimum values from the table from the file.
我需要在每个周期“ for”之后,他将单位添加到我的列表中,在该列表中,我的索引为零(在周期(start_elem,end_elem)中指示)。 此选项不起作用:
for j in A[int(start_elem):int(end_elem)]:
j+=1
print(A)
结论应该像这样
[0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 0, 0]
我的代码是:
L = [0 for j in range (36)]
for i in file:
start_elem = min(i[0], i[1])
end_elem = max(i[0], i[1])
for j in L[int(start_elem):int(end_elem)]:
j+=1
print(L)
file_new.write(str(L))
gen_file.closed
gen_file_new.closed
答案 0 :(得分:0)
首先,您应该正确计算最小和最大。然后考虑以下几点:
for i in file:
start_elem = min([i[0], i[1]])
end_elem = max([i[0], i[1]])
for j in range(int(start_elem):int(end_elem)):
A[j]+=1
print(A)
答案 1 :(得分:0)
j
只是一个循环变量。重新绑定它不会影响A
。改为:
A = [0 for x in range (35)]
file = [[15, 20], [20, 3], [12, 5], [5, 1], [7, 22]]
for i in file:
start, end = sorted(i)
for x in range(start, end):
A[x] += 1 # rebind the actual list index
A
# [0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
答案 2 :(得分:0)
对于这个问题,Python列表列表不是 的数据结构的很好选择,因为您正在更新Python级嵌套循环中的值。如果您可以使用第3方库,则可以使用NumPy:
import numpy as np
from io import StringIO
x = StringIO("""15 20
20 3
12 5
5 1
7 22""")
# define array of zeros
A = np.zeros(35)
# replace x with 'file.csv'; load and sort indices
index_array = np.sort(np.loadtxt(x, dtype=int), axis=1)
# iterate array of sorted indices
for start, end in index_array:
A[start: end] += 1
array([ 0., 1., 1., 2., 2., 2., 2., 3., 3., 3., 3., 3., 2.,
2., 2., 3., 3., 3., 3., 3., 1., 1., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0.])