Python -映射两个列表(不同大小)?



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

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

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

name           method
Joe Harris     Lab
Susie Carmike  Lab

您可以像下面这样使用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')]

试试itertools.cycle:

>>> from itertools import cycle
>>> list(zip(name, cycle(method)))
[('Joe Harris', 'Lab'), ('Susie Carmike', 'Lab')]
>>> 

最新更新