2024-05-20 23:16:01 发布
网友
例如:
list1 = [1, 2, 3] list2 = [4, 5, 6]
想要的结果:
NewList = [4, 5, 6, 8, 10, 12, 12, 15, 18]
您可以通过打印NewList来检查结果,在本例中,它可以为您提供上述内容。您的list1和list2是在这段代码上面初始化的,就像上面一样。你知道吗
NewList
list1
list2
NewList = [] for item1 in list1: for item2 in list2: NewList.append(item1*item2)
三种可能的方法:
可读性
new_list = [] for a in list1: for b in list2: new_list.append(a * b)
这让我们非常清楚发生了什么,但是需要四行代码和对new_list.append()的重复调用,这有点低效。
new_list.append()
简洁
new_list = [a * b for a in list1 for b in list2]
这是非常紧凑的,但对于许多人来说,要记住多个forlist comprehensions的嵌套是从左到右还是从右到左,需要一两分钟。
for
懒惰
from itertools import product new_list = [a * b for a, b in product(list1, list2)]
即使list1和list2是generators或其他一次性、延迟评估的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中命名变量的常规方法。你知道吗
new_list
您可以通过打印
NewList
来检查结果,在本例中,它可以为您提供上述内容。您的list1
和list2
是在这段代码上面初始化的,就像上面一样。你知道吗三种可能的方法:
可读性
这让我们非常清楚发生了什么,但是需要四行代码和对
new_list.append()
的重复调用,这有点低效。简洁
这是非常紧凑的,但对于许多人来说,要记住多个
for
list comprehensions的嵌套是从左到右还是从右到左,需要一两分钟。懒惰
即使
list1
和list2
是generators或其他一次性、延迟评估的iterables,例如。。。前两种方法都不行。
注意,在这些示例中,我使用了
new_list
而不是NewList
,这是Python中命名变量的常规方法。你知道吗相关问题 更多 >
编程相关推荐