繁体   English   中英

如何从给定数量的输入或Python中的列表创建具有固定长度的子列表?

[英]How to create sub list with fixed length from given number of inputs or list in Python?

我想从Python中给定的输入数量创建具有固定列表长度的子列表。

例如,我的输入是: ['a','b','c',......'z'] ...然后,我想将这些值放在几个列表中。 每个列表的长度应为6。所以我想要这样的东西:

first list = ['a','b','c','d','e','f']

second list = ['g','h','i','j','k','l']

last list = [' ',' ',' ',' ',' ','z' ]

我该如何实现?

这会将您的列表分为两个等长(6)的列表:

>>> my_list = [1, 'ab', '', 'No', '', 'NULL', 2, 'bc', '','Yes' ,'' ,'Null']
>>> x = my_list[:len(my_list)//2]
>>> y = my_list[len(my_list)//2:]
>>> x
[1, 'ab', '', 'No', '', 'NULL']
>>> y
[2, 'bc', '', 'Yes', '', 'Null']

如果要将列表拆分为许多较小的列表,请使用:

chunks = [my_list[x:x+size] for x in range(0, len(my_list), size)]

其中size是所需的较小列表的大小,例如:

>>> size = 2
>>> chunks = [my_list[x:x+size] for x in range(0, len(my_list), size)]
[[1, 'ab'], ['', 'No'], ['', 'NULL'], [2, 'bc'], ['', 'Yes'], ['', 'Null']]
>>> for item in chunks:
        print (item)
[1, 'ab']
['', 'No']
['', 'NULL']
[2, 'bc']
['', 'Yes']
['', 'Null']

这将返回一个二维列表“ b”,其中每个列表包含的块数与大块一样多。

a = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
b = []
chunksize = 6
def get_list(a, chunk):
    return a[chunk*chunksize:chunk*chunksize+chunksize]
for i in range(int(len(a) / chunksize)):
    b.append(get_list(a,i))
print(b)

输出:

[['a', 'b', 'c', 'd', 'e', 'f'], ['g', 'h', 'i', 'j', 'k', 'l'], ['m', 'n', 'o', 'p', 'q', 'r'], ['s', 't', 'u', 'v', 'w', 'x']]

您的输入是一个字符串,您需要先用逗号将其分割,然后再将其进一步分割:

input_string = "1, 'ab', '', 'No', '', 'NULL', 2, 'bc', '','Yes' ,'' ,'Null'"
bits = input_string.split(',')
x,y = bits[:6],bits[6:] # divide by 6
x,y = bits[:len(bits)//2],bits[len(bits)//2:] # divide in half

最小的解决方案:

    x = ["a","b","c","d","e","f","g","h","i","j"]
    size = 3 (user input)
    for counter in range(0,len(x),size):
        print(x[counter:counter+size])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM