Python:如何为列表的每个元素添加来自另一个列表的每个元素?

时间:2017-02-11 19:55:36

标签: python list loops

我是Python新手,我想管理一些我创建的列表。因此,在列表A中,我有最后两位数字,在列表B中,我有000到999之间的数字。

对于列表A中的每一年,我想在列表B中添加每个数字,我想使用循环...

listA = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99']

listB = ['000', '001', '002', '003', ...]

* somethingsomething loop *

listC = ['00000', '00001', '00002', ...]

谢谢!

5 个答案:

答案 0 :(得分:2)

使用Array.prototype.reduce

from itertools import product

listA = ['00', '01', '02', '03']
listB = ['000', '001', '002', '003']

listC = [a + b for a, b in product(listB, listA)] # ['00000', '00001', '00002', ...]

product函数迭代所提供的iterables的笛卡尔积(所有组合的k元组从每个列表中绘制一个)。字符串连接用于连接元组的元素(a + b)。列表理解将它们全部放入了一个很大的范围内。列表。

答案 1 :(得分:1)

虽然itertools.product很方便,但一个简单的嵌套理解也可以做到:

for

请注意,第一个 $("#text-box").mouseup(function () { var el = document.getElementById("text-box"); getCaretCharacterOffsetWithin(el); }); 具有更宽的范围,与自然英语相比,这有时似乎是违反直觉的。

答案 2 :(得分:1)

你需要迭代listB,所以你会这样做:

for itemB in listB:

然后对于每个项目,您需要将其与listA中的每个元素进行匹配,这样您就可以在listA上执行另一个嵌套循环。

for itemA in listA:

然后在两个循环中,您将拥有itemAitemB的所有组合。所以你只需要连接它们并将它们添加到输出列表中。

完整解决方案

ouptut = []
for itemB in listB:
  for itemA in listA:
    output.append(itemB + itemA)
另一个解决方案中提到的

itertools.product可以为您提供更简洁的解决方案,因为它取代了两个for循环。

答案 3 :(得分:0)


> Code to reproduce listA

listA = []
for i in range(0,10):
    for j in range(0,10):
        e = str(i)+str(j)
        listA.append(e)
print(listA)

> Code to reproduce listB


listB = []
for i in range(0,10):
    for j in range(0,10):
        for k in range(0,10):
            e = str(i)+str(j)+str(k)
            listB.append(e)
print(listB)

> Now we just iterate over each element of listA and append one by one each element of listB, and keep appending the result to listC to get the final output list



listC = []
for i in listA:
    for j in listB:

        listC.append(i+j)
print(listC)

答案 4 :(得分:-4)

您可以使用inbuild函数zip()

例如:

class SumList():

    def __init__(self, this_list):
        self.mylist = this_list

    def __add__(self, other):
        new_list = [ x + y for x,y in zip(self.mylist, other.mylist)]
        return SumList(new_list)

    def __repr__(self):
        return str(self.mylist)

cc = SumList([1,2,3,4])
dd = SumList([100,200,300,400])    
ee = cc + dd
print(ee)