首页 > 解决方案 > Python - 映射两个列表(不同大小)?

问题描述

例如,我有以下两个列表:

name = ["Joe Harris", "Susie Carmike"]
method = ["Lab"]

如何将这两个列表映射到下面的输出位置?或者除了 Python 中的列表之外还有更好的方法来映射不同大小的元素以获得这样的输出?

name           method

Joe Harris     Lab

Susie Carmike  Lab

标签: pythonlist

解决方案


你可以itertools.product像下面这样使用:

import itertools

name = ["Joe Harris", "Susie Carmike"]
method = ["Lab"]

somelists = [name] + [method]
for element in itertools.product(*somelists):
    print(element) 

输出:

('Joe Harris', 'Lab')
('Susie Carmike', 'Lab')

或者:

>>> list(itertools.product(*somelists))
[('Joe Harris', 'Lab'), ('Susie Carmike', 'Lab')]

要创建 DataFrame,请尝试以下操作:

data = list(itertools.product(*somelists))
df = pd.DataFrame(data, columns=['name', 'method'])
print(df)

输出:

            name method
0     Joe Harris    Lab
1  Susie Carmike    Lab

您可以使用此方法,multi list如下所示:

import itertools

name = ["Joe Harris", "Susie Carmike", "Joe Harris2"]
method = ["Lab", 'Lab2']
approach = ['app1', 'app2']

somelists = [name] + [method] + [approach]

list(itertools.product(*somelists))

输出:

[('Joe Harris', 'Lab', 'app1'),
 ('Joe Harris', 'Lab', 'app2'),
 ('Joe Harris', 'Lab2', 'app1'),
 ('Joe Harris', 'Lab2', 'app2'),
 ('Susie Carmike', 'Lab', 'app1'),
 ('Susie Carmike', 'Lab', 'app2'),
 ('Susie Carmike', 'Lab2', 'app1'),
 ('Susie Carmike', 'Lab2', 'app2'),
 ('Joe Harris2', 'Lab', 'app1'),
 ('Joe Harris2', 'Lab', 'app2'),
 ('Joe Harris2', 'Lab2', 'app1'),
 ('Joe Harris2', 'Lab2', 'app2')]

推荐阅读