📜  Python|以循环方式对两个不等长列表求和

📅  最后修改于: 2022-05-13 01:54:38.216000             🧑  作者: Mango

Python|以循环方式对两个不等长列表求和

给定两个长度不等的列表,任务是添加两个列表的元素,当较小列表的元素结束时,以循环方式添加元素,直到迭代较大列表的所有元素。

让我们讨论一下我们可以完成这项任务的不同方法。

方法 #1:使用 Iteratools 和 zip

# Python code to add two different
# length lists in cyclic manner
  
# Importing
from itertools import cycle
  
# List initialization
list1 = [150, 177, 454, 126]
list2 = [9, 44, 2, 168, 66, 80, 123, 6, 180, 184]
  
# Using zip
output = [x + y for x, y in zip(cycle(list1), list2)]
  
# Printing output
print(output)
输出:
[159, 221, 456, 294, 216, 257, 577, 132, 330, 361]


方法#2:使用Iteratools和starmap

# Python code to add two different 
# length lists in cyclic manner
  
# Importing
from itertools import starmap, cycle
from operator import add
  
# List initialization
list1 = [150, 177, 454, 126]
list2 = [9, 44, 2, 168, 66, 80, 123, 6, 180, 184]
  
# Using starmap
output = list(starmap(add, zip(cycle(list1), list2)))
  
# Print output
print(output)
输出:
[159, 221, 456, 294, 216, 257, 577, 132, 330, 361]


方法#3:使用列表推导

# Python code to add two different
# length lists in cyclic manner
  
# List initialization
list1 = [150, 177, 454, 126]
list2 = [9, 44, 2, 168, 66, 80, 123, 6, 180, 184]
  
# List comprehension
output = [list1[i % len(list1)]+list2[i]
             for i in range(len(list2))]
  
# Printing output
print(output)
输出:
[159, 221, 456, 294, 216, 257, 577, 132, 330, 361]