如何在每个可能的组合中用一个列表乘以另一个列表?

2024-05-20 23:16:01 发布

您现在位置:Python中文网/ 问答频道 /正文

例如:

list1 = [1, 2, 3]
list2 = [4, 5, 6]

想要的结果:

NewList = [4, 5, 6, 8, 10, 12, 12, 15, 18]

Tags: list2list1newlist
2条回答

您可以通过打印NewList来检查结果,在本例中,它可以为您提供上述内容。您的list1list2是在这段代码上面初始化的,就像上面一样。你知道吗

NewList = []
for item1 in list1:
    for item2 in list2:
        NewList.append(item1*item2)

三种可能的方法:

  1. 可读性

    new_list = []
    for a in list1:
        for b in list2:
            new_list.append(a * b)
    

    这让我们非常清楚发生了什么,但是需要四行代码和对new_list.append()的重复调用,这有点低效。

  2. 简洁

    new_list = [a * b for a in list1 for b in list2]
    

    这是非常紧凑的,但对于许多人来说,要记住多个forlist comprehensions的嵌套是从左到右还是从右到左,需要一两分钟。

  3. 懒惰

    from itertools import product
    
    new_list = [a * b for a, b in product(list1, list2)]
    

    即使list1list2generators或其他一次性、延迟评估的iterables,例如

    >>> from itertools import count, islice
    >>> list1 = islice(count(1), 3)
    >>> list2 = islice(count(4), 3)
    >>> [a * b for a, b in product(list1, list2)]
    [4, 5, 6, 8, 10, 12, 12, 15, 18]
    

    。。。前两种方法都不行。

注意,在这些示例中,我使用了new_list而不是NewList,这是Python中命名变量的常规方法。你知道吗

相关问题 更多 >