我是Python的新手,我试图通过从列表A,B和C中检索第一项,然后向列表D附加这些值,然后对其进行迭代,来创建“主列表”。 >
我正在使用代码:
i = 1
while i < 4:
listA.append(str(i))
listB.append(str(i + 10))
listC.append(str(i + 100))
i += 1
print(listA, listB, listC)
哪个返回:[1, 2, 3] [11, 12, 13] [101, 102, 103]
我想要最后要得到的结果是:[1, 11, 101, 2, 12, 102, 3, 13, 103]
我尝试使用以下代码:
while k < 4:
listD.append([item[k] for item in listA])
listD.append([item[k] for item in listB])
listD.append([item[k] for item in listC])
k += 1
print(listD)
但这会返回错误:TypeError: 'int' object is not subscriptable
。
答案 0 :(得分:1)
您应该使用内置的zip
函数:
listA, listB, listC = [], [], []
i = 1
while i < 4:
listA.append(str(i))
listB.append(str(i + 10))
listC.append(str(i + 100))
i += 1
print(listA, listB, listC)
listD = [item for sublist in zip(listA, listB, listC) for item in sublist]
print(listD)
输出:
['1', '2', '3'] ['11', '12', '13'] ['101', '102', '103']
['1', '11', '101', '2', '12', '102', '3', '13', '103']
答案 1 :(得分:1)
这是一些Python代码:
>>>
>>>
>>> A=[1,2,3]
>>> B=[11,12,13]
>>> C=[101,102,103]
>>>
>>>
>>> D=[]
>>>
>>> [D.extend(a) for a in zip(A,B,C)]
[None, None, None]
>>>
>>> D
[1, 11, 101, 2, 12, 102, 3, 13, 103]
>>>
所以您的python代码应该像这样:
D = []
for i in range(1,4):
listA.append(str(i))
listB.append(str(i + 10))
listC.append(str(i + 100))
[D.extend(a) for a in zip(A,B,C)]
print(D)
这只是一个起点,您可以编写得更好。
答案 2 :(得分:0)
如何完全跳过组件列表?
#! /bin/env python3
orders_of_magnitude = 3
numbers = 4
out = [10**om - 0**om + n for n in range(1,numbers) for om in range(orders_of_magnitude)]
print(out)