我已为sub lists
分配了large list
名称,如下所示:
AB, CD, EF, GH, IJ, KL, MN, OP, QR, ST, UV, WQ, YZ, AA, BB, CC, DD, EE, FF, GG = large_list[0], large_list[1], large_list[2], large_list[3], large_list[4], large_list[5], large_list[6], large_list[7], large_list[8], large_list[9], large_list[10], large_list[11], large_list[12], large_list[13], large_list[14], large_list[15], large_list[16], large_list[17], large_list[18], large_list[19]
这看起来非常不实用,因此想知道是否有一种方法被认为更有效甚至更短。
我假设某种形式的循环有帮助吗?例如for sub_list in large_list: ???
答案 0 :(得分:2)
您可以使用Python的解包功能:
L = list(range(10))
a, b = L[:2]
对于你的情况:
AB, CD, EF, GH, IJ, KL, MN, OP, QR, ST, UV, WQ, YZ, AA, BB, CC, DD, EE, FF, GG = large_list[:20]
为了更好的可读性,您可以使用括号来打破行:
large_list = list(range(100))
(AB, CD, EF, GH, IJ, KL, MN, OP, QR, ST, UV, WQ,
YZ, AA, BB, CC, DD, EE, FF, GG) = large_list[:20]
现在AB
为0
而GG
为19
答案 1 :(得分:1)
我会使用字典
li = ["AB", "CD", "EF", "GH", "IJ", "KL", "MN", "OP", "QR", "ST", "UV", "WQ", "YZ", "AA", "BB", "CC", "DD", "EE", "FF", "GG" ]
dicti = {}
for subList,key in zip(large_list,li):
dicti[key] = subList
你也可以使用dict理解:
li = ["AB", "CD", "EF", "GH", "IJ", "KL", "MN", "OP", "QR", "ST", "UV", "WQ", "YZ", "AA", "BB", "CC", "DD", "EE", "FF", "GG" ]
dicti = dicti = {key: sub_ist for key, sub_ist in zip(li, large_list)}
Chris_Rands在评论中写道,你可以这样做:
dict(zip(li,large_list))
答案 2 :(得分:1)
Python有一个叫做元组解包的东西,你可以从集合中分配多个值。它“打开”集合将其变成所有部分。这是一个简单的例子:
numbers = [1, 2, 3]
a, b, c = numbers
# a, b, c = [1, 2, 3]
# a = 1, b = 2, c = 3
所以你可以通过右边的列表名称来实现你的方法:
AB, CD, EF, GH, IJ, KL, MN, OP, QR, ST, UV, WQ, YZ, AA, BB, CC, DD, EE, FF, GG = large_list
虽然large_list
中的项目数量多于或少于您指定的项目,但您会收到错误。 (即如果large_list
有21个项目,但你试图分配给20个)。您可以使用large_list[:20]
至少只占用列表中的前20个项目来缓解它过大。