如何从列表中检索项目“ n”?

时间:2019-03-14 22:50:57

标签: python python-3.x list

我是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

3 个答案:

答案 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)