[英]How to find all the two digit combinations of the elements in a list in python without using iterators and brute force
如果 List 由 1,2 和 3 作为元素组成所有可能的 2 位数字组合为 11 12 13 22 23 21 33 31 32
这取决于你对蛮力的定义......
L = [1,2,3]
L3 = [
(l * 10) + l2
for l in L
for l2 in L
]
如果 L 被定义为range(0, 10)
那么最大的总组合将只有 100,这在现代计算机上没什么大不了的。 但是,如果您正在考虑将其扩展到更多数字,那么您可能会考虑使用生成器。
列表理解将在内存中创建一个完整的列表。 而当您只想迭代结果并且实际上不需要同时在内存中的所有元素时使用生成器。
L = range(0, 10)
combinations = (
(l * 100) + (l2 * 10) + l3
for l in L
for l2 in L
for l3 in L
)
注意这里唯一的区别是括号。
在 ipython 中运行它会给你这样的东西:
In [29]: combinations
Out[29]: <generator object <genexpr> at 0x7f68103baad0>
可以迭代生成器对象,但在使用之前不会计算项目。 发电机只能消耗一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.