我有从{excel文件导入的a1, a2, and a3
列表。
W = 4
T = 5
I = 206
a1 = []
for w in range(7, W+7):
a1.append(ProjectData.col_values(w, 3)[:I])
a2 = []
for w in range(13, W+13):
a2.append(ProjectData.col_values(w, 3)[:I])
a3 = []
for w in range(19, W+19):
a3.append(ProjectData.col_values(w, 3)[:I])
如您所见,它们是同一张纸的不同列。我想将这些列表(列)组合在另一个列表中,比如列表a
。我正在使用:
a = [a1, a2, a3]
但是,我希望它们是通用的;如果我有a4, a5
等,我希望将它们自动添加到列表a
中。我可以创建以下可以使用的逻辑:
a = []
for i in range(7, 7+6*T, T+1):
for w in range(i, W+i):
.........................
我错过了上述部分,无需创建单独的a1, a2, a3
....列表即可将所有内容附加到列表中。任何建议都表示赞赏。
答案 0 :(得分:2)
您可以每次创建一个临时列表并附加它,而不是创建单独的命名列表。
a = []
for i in range(7, 7+6*T, T+1):
tmp = [] # temporary list
for w in range(i, W+i):
tmp.append(ProjectData.col_values(w, 3)[:I])
a.append(tmp)
答案 1 :(得分:1)
你的循环逻辑设置正确;每次外循环再次运行时,只需创建一个类似a_sub
的列表,然后将值附加到内循环中的子列表,然后将子列表附加到外循环末尾的a
。试试这个:
a = []
for i in range(7, 7+6*T, T+1):
a_sub = []
for w in range(i, W+i):
a_sub.append(ProjectData.col_values(w, 3)[:I])
a.append(a_sub)
可替换地:
a = []
for i in range(7, 7+6*T, T+1):
a.append([]) # Append an empty list
for w in range(i, W+i):
a[-1].append(ProjectData.col_values(w, 3)[:I]) # a[-1] is the last element of a, which is the sublist you just created
可替换地:
a=[[ProjectData.col_values(w+i,3)[:I]for w in range(W)]for i in range(7,7+6*T,T+1)] # Don't use this because it's unreadable
如果您喜欢最后一个,请将其用于可读性
a = [[ProjectData.col_values(w, 3)[:I] for w in range(i, W + i)] for i in range(7, 7 + 6 * T, T + 1]
稍微长一点,但这不是代码高尔夫你知道的:P我建议亲自使用第二个。
虽然是一名代码高尔夫球手,但有时会在我的代码中看到像第三个这样的东西......:P
答案 2 :(得分:1)
a = []
for i in range(7, 7+6*T, T+1):
for w in range(i, W+i):
a.append(ProjectData.col_values(w, 3)[:I])
append
将一个项目添加到列表a
。在这种情况下,项目是一个列表。如果你这样做三次,它会添加三个列表。然后a [1] =列表a1。
您无需将列表分配给temp var即可将其添加到a
。