Python 将列表的一个元素放在另一个列表的所有元素之间
我有两个不同长度的列表Python 将列表的一个元素放在另一个列表的所有元素之间,python,list,Python,List,我有两个不同长度的列表 list_a = ['pineapple', 'banana', 'mango'] list_b = ['tropical'] 我想把它们结合起来如下: final_list = ['pineapple', 'tropical', 'banana', 'tropical', 'mango', 'tropical'] 目标是最终得到一个数据帧,其中包括变量“fruits”和变量“origin”。我将通过创建一个只显示每秒钟一个元素的列表来实现这一点,然后再合并 我已
list_a = ['pineapple', 'banana', 'mango']
list_b = ['tropical']
我想把它们结合起来如下:
final_list = ['pineapple', 'tropical', 'banana', 'tropical', 'mango', 'tropical']
目标是最终得到一个数据帧,其中包括变量“fruits”和变量“origin”。我将通过创建一个只显示每秒钟一个元素的列表来实现这一点,然后再合并
我已经尝试过的:
fruit_origin = list_b[0]
desired_list = list(map(fruit_origin.__add__, list_a))
但这会像这样返回:
['pineappletropical', 'bananatropical', 'mangotropical']
提前谢谢 您可以使用,和嵌套的a-la:
您还可以使用@Matthias建议的方法展平这些线对:
from itertools import cycle, chain
[*chain(*zip(list_a, cycle(list_b)))] # Python >= 3.5
# or more verbose
list(chain.from_iterable(zip(list_a, cycle(list_b))))
我不确定我是否正确理解了你的问题,但是如果你想映射原点,我假设它只是列表中的1个元素。您可以尝试以下方法:
desired_list = []
for fruit in list_a:
desired_list.append(fruit)
desired_list.append(list_b[0])
print(desired_list)
输出:
['pineapple', 'tropical', 'banana', 'tropical', 'mango', 'tropical']
组合
itertools.cycle
、zip
和itertools.chain
cycle(['tropical'])
=> 'tropical', 'tropical', 'tropical', 'tropical', ...
zip(['pineapple', 'banana', 'mango'], ['tropical', 'tropical', 'tropical'])
=> [('pineapple', 'tropical'), ('banana', 'tropical'), ('mango', 'tropical')]
list(chain(*[('pineapple', 'tropical'), ('banana', 'tropical'), ('mango', 'tropical')]))
=> ['pineapple', 'tropical', 'banana', 'tropical', 'mango', 'tropical']
最终代码
result = list(chain(*zip(list_a, cycle(list_b))))
您可以将第二个列表与第一个列表中的项目数相乘,然后使用
zip
和如下方法:
['pineappletropical', 'bananatropical', 'mangotropical']
[邮政编码中x的项目(列表a,列表b*len(列表a))用于x中的项目]
输出[7]:[‘菠萝’、‘热带’、‘香蕉’、‘热带’、‘芒果’、‘热带’]
我认为在这种情况下,嵌套循环比单行程序更具可读性
list_a = ['pineapple', 'banana', 'mango']
list_b = ['tropical']
final_list = []
for a in list_a:
final_list.append(a)
for b in list_b:
final_list.append(b)
我也有同样的想法,但我使用了
itertools.chain
:list(chain(*zip(list_a,cycle(list_b)))
非常感谢你们两个-两个选项都有效!