繁体   English   中英

如何在不使用迭代器和蛮力的情况下在python中找到列表中元素的所有两位数组合

[英]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.

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