繁体   English   中英

Python:我有一个列表,我想将它添加到列表的每个元素中

[英]Python: I have a list and I want to add it to each element of the list

让我们举个例子:我有一个列表: 1, 2, 3, 4, 5我想添加每个要相互添加的元素。 1+2, 1+3, 1+4, 1+5, 2+1, 2+3, 2+4, 2+5,等。 所以 output 应该像3, 4, 5, 6, 3, 5, 6, 7等等。

谁能帮我解决这个问题?

from itertools import starmap, permutations
from operator import add

values = [1, 2, 3, 4, 5]

print(list(starmap(add, permutations(values, 2))))

Output:

[3, 4, 5, 6, 3, 5, 6, 7, 4, 5, 7, 8, 5, 6, 7, 9, 6, 7, 8, 9]
>>> 

使用itertools.permutations

from itertools import permutations

my_list = [1, 2, 3, 4, 5]
new_list = [x+y for x,y in permutations(my_list, 2)]

Output:

[3, 4, 5, 6, 3, 5, 6, 7, 4, 5, 7, 8, 5, 6, 7, 9, 6, 7, 8, 9]

你可以做这样的事情。

def yar(int_list):

    har = []

    for num in int_list:
    
        fiddly = []
        
        for value in int_list:
            
            add = num
            
            add += value
            
            fiddly.append(add)
        
        har.append(fiddly)
    
    return har

fee = [1, 2, 3, 4]
print(yar(fee))

# would output [[2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]]

解决这个问题的关键是嵌套for循环。 对于列表中的每个数字(在这种情况下为fee ),循环遍历列表中的每个数字fee并将其add到存储在外部循环中的值中,然后将该值存储在列表中(即fidddly )。

我添加了har列表,以便用户可以访问每次迭代的组合。 (索引 0 表示 1 的组合,索引 1 表示 2 的组合,等等)

您可以以某种方式使其成为列表理解,我确信出于某种原因。 我还不是最擅长弄清楚这一点,但这段代码仍然有效。

如果您的所有元素都是不同的,您可以在列表理解中执行此操作,而不是将每个数字与除自身之外的所有数字相加:

L = [1, 2, 3, 4, 5]

S = [ a+b for a in L for b in L if a!=b]

# [3, 4, 5, 6, 3, 5, 6, 7, 4, 5, 7, 8, 5, 6, 7, 9, 6, 7, 8, 9]

如果列表中可能有重复的数字,那么您需要根据它们的索引排除与它们自己的数字相加:

[ a+b for i,a in enumerate(L) for j,b in enumerate(L) if i!=j]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM