Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在for循环中创建列表列表_Python_Python 2.7_List - Fatal编程技术网

Python 在for循环中创建列表列表

Python 在for循环中创建列表列表,python,python-2.7,list,Python,Python 2.7,List,我有从excel文件导入的a1、a2和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.ap

我有从excel文件导入的
a1、a2和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])
如您所见,它们是同一工作表的不同列。我想将这些列表(列)合并到另一个列表中,比如list
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
。。。。名单。感谢您的建议。

您可以每次创建一个临时列表并附加它,而不是创建单独的命名列表

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)

您可以每次创建一个临时列表并附加它,而不是创建单独的命名列表

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)

您的循环逻辑设置正确;每次再次运行外部循环时,只需创建一个类似于
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 = []
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

您的循环逻辑设置正确;每次再次运行外部循环时,只需创建一个类似于

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):
    for w in range(i, W+i):
        a.append(ProjectData.col_values(w, 3)[:I])
或者:

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 = []
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

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

您无需将列表分配给临时变量即可将其添加到
a

append
将项目添加到列表
a
。本例中的项目是一个列表。如果执行三次,则会添加三个列表。然后a[1]=列表a1


您无需将该列表分配给临时变量即可将其添加到
a

a=[[ProjectData.col_values(w,3)[:I]表示范围内的w(I,w+I)]表示范围内的I(7,19,6)]
您对第一个进行了评论,事实上,我希望您已将其作为答案编写。我意识到我只是缺少了括号。一旦我为最后一个范围添加
(7,7+6*T,T+1)
,它就会工作。感谢@maufactor.
a=[[ProjectData.col_values(w,3)[:I]表示w在范围内(I,w+I)]表示I在范围内(7,19,6)]
您对第一个进行了评论,实际上,我希望您能将此作为一个答案。我意识到我只是缺少了括号。一旦我为最后一个范围添加
(7,7+6*T,T+1)
,它就会工作。谢谢@factor。非常感谢您的详细解释。我只是被卡住了。它非常简单,当然,第三个看起来最漂亮。@user8028576当然欢迎您!你真的认为第三个看起来最漂亮吗?我认为第四个看起来最好,因为它本质上与第三个相同,但实际上你可以阅读它,这在编码过程中有时很有用…:P非常感谢您的详细解释。我只是被卡住了。它非常简单,当然,第三个看起来最漂亮。@user8028576当然欢迎您!你真的认为第三个看起来最漂亮吗?我认为第四个看起来最好,因为它本质上与第三个相同,但实际上你可以阅读它,这在编码过程中有时很有用…:p这将以
a=[[a1].[a2],[a3]]
结束,而不是
a=[a1,a2,a3]
。您不需要创建tmp,因为
ProjectData.col\u values
已经返回了一个列表。不,它工作得非常好。这就是我想要的。谢谢@Neo。@bikemule
tmp
相当于
a1
a2
a3
。他们的列表是
a
,与我的代码中的列表相同。这将以
a=[[a1].[a2],[a3].
结束,而不是
a=[a1,a2,a3]
。您不需要创建tmp,因为
ProjectData.col\u values
已经返回了一个列表。不,它工作得非常好。这就是我想要的。谢谢@Neo。@bikemule
tmp
相当于
a1
a2
a3
。他们的列表是
a
,与“我的代码”中的列表相同。请在第二个冒号后输入
enter
。它将提高可读性。在第二个冒号后面加一个
enter
。它将提高可读性。