使用列表推导生成来自不同平面列表的列表列表

时间:2018-01-23 21:46:04

标签: python python-2.7 list list-comprehension

我有三个清单,即:

commands = ["ping", "exec", "someCmd"]
parameters = ["127.0.0.1", "mspaint", "someParam"]
iterations = ["2", "1", "3"]

你可以想象,每个项目索引对应于每个列表中的相同索引,所以我想要一个列表列表,其中每个元素对应于每个程序,即:

[['ping', '127.0.0.1', '2'], ['exec', 'mspaint', '1'], ['someCmd', 'someParam', '3']]

嗯,对于像我这样的初学者来说,使用for循环很容易:

new_list = []
for c, _ in enumerate(commands):
    row = [commands[c], parameters[c], iterations[c]]
    new_list.append(row)

或者我想出的第一个(我不知道它是好还是坏)

new_list = []
for c, command in enumerate(commands):
    row = [command, parameters[c], iterations[c]]
    new_list.append(row)

但是我不想放弃并试图通过列表理解来实现同样的目标,这显然很糟糕,这就是为什么我在这里

my_attempt = [[c, p, i] for c, p, i in commands, parameters, iterations]

但令人惊讶的是(对我来说)只列出了一个列表,但每个元素都像输入一样,即:

[['ping', 'exec', 'asd'], ['127.0.0.1', 'paint', 'param'], ['2', '1', '3']]

你能帮我解决这个问题,还是建议我采用其他方法?

2 个答案:

答案 0 :(得分:0)

zip(commands, parameters, iterations)

答案 1 :(得分:0)

您需要的是zip()函数

zip(commands,parameters,iterations)

将为您提供所需的结果