如何在列表理解中嵌套循环

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?非常感谢您的帮助:)

The*_*Guy 5

如果您对您编写的代码的列表理解版本感兴趣:

>>> [(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)