Ein*_*veX 0 python list-comprehension nested-loops
我这里有一段代码,我想知道是否可以通过 Python 中的列表理解使这变得更简单......
T: str = 'XY'
combinations: list = [] # Make an empty list
for i in range(len(T)):
for j in range(len(T)): combinations.append((T[i], T[j])) # (T[i], T[j]) is act as a tuple here
Run Code Online (Sandbox Code Playgroud)
如何将其简化为更好的 for 循环,而不需要花费这么多次循环iand j?非常感谢您的帮助:)
如果您对您编写的代码的列表理解版本感兴趣:
>>> [(T[i], T[j]) for j in range(len(T)) for i in range(len(T))]
[('X', 'X'), ('Y', 'X'), ('X', 'Y'), ('Y', 'Y')]
Run Code Online (Sandbox Code Playgroud)
修改后的列表理解没有 len 和 range,但迭代字符串本身:
>>> [(x,y) for x in T for y in T]
[('X', 'X'), ('X', 'Y'), ('Y', 'X'), ('Y', 'Y')]
Run Code Online (Sandbox Code Playgroud)
如果你想使用product函数标准库itertools:
>>> from itertools import product
>>> list(product(T, repeat=2))
[('X', 'X'), ('X', 'Y'), ('Y', 'X'), ('Y', 'Y')]
Run Code Online (Sandbox Code Playgroud)