Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 如何通过一个循环创建多个列表?_Python_List - Fatal编程技术网

Python 如何通过一个循环创建多个列表?

Python 如何通过一个循环创建多个列表?,python,list,Python,List,我想通过使用带有某些条件的单个循环来创建多个列表。 我知道如何通过追加来创建一个列表,但这里循环的所有结果都放在一个列表中,这不是我想要的。 假设我们在前100个数字上运行一个循环,我想创建多个列表,其中第一个列表包含5个数字,第二个从6到10,第三个从11到15,等等。 此代码仅用于我创建的一个列表 number = range(100) first = [] for i in number: first.append(i) first 诸如此类: l = [] for x in r

我想通过使用带有某些条件的单个循环来创建多个列表。 我知道如何通过追加来创建一个列表,但这里循环的所有结果都放在一个列表中,这不是我想要的。 假设我们在前100个数字上运行一个循环,我想创建多个列表,其中第一个列表包含5个数字,第二个从6到10,第三个从11到15,等等。 此代码仅用于我创建的一个列表

number = range(100)
first = []
for i in number:
    first.append(i)
first
诸如此类:

l = []
for x in range(6, 102, 5):
  l.append([y for y in range(x-5, x)])
输出:

[[1, 2, 3, 4, 5],
 [6, 7, 8, 9, 10],
 [11, 12, 13, 14, 15],
 [16, 17, 18, 19, 20],
 [21, 22, 23, 24, 25],
 [26, 27, 28, 29, 30],
 [31, 32, 33, 34, 35],
 [36, 37, 38, 39, 40],
 [41, 42, 43, 44, 45],
 [46, 47, 48, 49, 50],
 [51, 52, 53, 54, 55],
 [56, 57, 58, 59, 60],
 [61, 62, 63, 64, 65],
 [66, 67, 68, 69, 70],
 [71, 72, 73, 74, 75],
 [76, 77, 78, 79, 80],
 [81, 82, 83, 84, 85],
 [86, 87, 88, 89, 90],
 [91, 92, 93, 94, 95],
 [96, 97, 98, 99, 100]]

范围
函数采用三个参数
开始
停止
步骤
,我会做类似的列表理解:

[[i, i+1, i+2, i+3, i+4] for i in range (1, 100, 5)]
输出如下所示:

[[1, 2, 3, 4, 5], 
...,
[96, 97, 98, 99, 100]]

这是一种方法。基本上,您可以从列表中创建一个迭代器,然后从中获取所需的所有列表

number = range(100)
number_iter = iter(number)
lists = []

while True:
  try:
    lists.append([next(number_iter) for _ in range(5)])
  except StopIteration as e:
    break
lists

这样做的好处是,您的初始“数字”列表可以是任何东西…

我会在第一个列表中使用第二个列表

number = range(100)
cnt = 0
first = []
second = []

for i in number:
    cnt += 1
    second.append(i)

    if cnt == 5:
        first.append(second)
        cnt = 0
        second = []

first
输出:

[[0, 1, 2, 3, 4],
 [5, 6, 7, 8, 9],
...
 [95, 96, 97, 98, 99]]

尝试此操作,这将创建您想要的:

lists = [] 
for i in range(1, 100, 5): # range(start, end, size_of_each_list)
    lists.append(list(range(i,i + 5)))
列表将是:

[[1, 2, 3, 4, 5],
 [6, 7, 8, 9, 10],
 [11, 12, 13, 14, 15],
 [16, 17, 18, 19, 20],
 [21, 22, 23, 24, 25],
 [26, 27, 28, 29, 30],
 [31, 32, 33, 34, 35],
 [36, 37, 38, 39, 40],
 [41, 42, 43, 44, 45],
 [46, 47, 48, 49, 50],
 [51, 52, 53, 54, 55],
 [56, 57, 58, 59, 60],
 [61, 62, 63, 64, 65],
 [66, 67, 68, 69, 70],
 [71, 72, 73, 74, 75],
 [76, 77, 78, 79, 80],
 [81, 82, 83, 84, 85],
 [86, 87, 88, 89, 90],
 [91, 92, 93, 94, 95],
 [96, 97, 98, 99, 100]]

这是可能的。我们可以通过在环境中直接创建变量来实现这一点。
(如果它只存在于封闭函数中,则使用)


可以使用以下代码执行此操作:

#运行循环
对于范围(100)内的i:
#对于0-4,list_name='list_1'
list_name='list_'+str(i//5+1)
#尝试附加到该列表中
尝试:
globals()[list_name].append(i)
#如果不存在,则在运行时创建它!
除KeyError外:
globals()[list_name]=[i]
globals()[list\u name]=[i]
首先:

  • 获取模块环境字典
  • 创建
    list\u name
    变量
  • 将其初始化为包含
    i
    的列表
让我们把它们全部打印出来:

范围(20)内的i的
:
#打印列表_1至列表_20
列表名称='列表名称'+str(i+1)
打印(列表名称+':',全局()[列表名称])
你会得到:

list_1: [0, 1, 2, 3, 4]
list_2: [5, 6, 7, 8, 9]
list_3: [10, 11, 12, 13, 14]
list_4: [15, 16, 17, 18, 19]
list_5: [20, 21, 22, 23, 24]
list_6: [25, 26, 27, 28, 29]
list_7: [30, 31, 32, 33, 34]
list_8: [35, 36, 37, 38, 39]
list_9: [40, 41, 42, 43, 44]
list_10: [45, 46, 47, 48, 49]
list_11: [50, 51, 52, 53, 54]
list_12: [55, 56, 57, 58, 59]
list_13: [60, 61, 62, 63, 64]
list_14: [65, 66, 67, 68, 69]
list_15: [70, 71, 72, 73, 74]
list_16: [75, 76, 77, 78, 79]
list_17: [80, 81, 82, 83, 84]
list_18: [85, 86, 87, 88, 89]
list_19: [90, 91, 92, 93, 94]
list_20: [95, 96, 97, 98, 99]


注意:为什么不玩一些数字游戏呢!请参阅python软件包。

能否显示预期的输出?您希望结果是列表列表、单独列表还是其他什么?我希望每个条件都有一个单独的列表。因此,总共应该有20个列表,每个列表有5个数字。在查看多维列表时,有很多方法可以做到这一点。你总是可以有多个循环,对吗?