嵌套循环使用列表理解
如果我有两个string, 'abc'
和'def'
,我可以使用两个for循环来获取它们的所有组合:
for j in s1: for k in s2: print(j, k)
不过,我希望能够使用列表理解来做到这一点。 我已经尝试了很多方法,但从来没有设法得到它。 有谁知道如何做到这一点?
lst = [j + k for j in s1 for k in s2]
要么
lst = [(j, k) for j in s1 for k in s2]
如果你想要元组。
就像在问题中, for j...
是外部循环, for k...
是内部循环。
从本质上讲,你可以通过一个接一个地粘贴多个独立的“for x in y”子句来进行列表理解。
由于这本质上是一个笛卡儿积,你也可以使用itertools.product 。 我认为它更清晰,尤其是当你有更多的input迭代。
itertools.product('abc', 'def', 'ghi')
也尝试recursion:
s="" s1="abc" s2="def" def combinations(s,l): if l==0: print s else: combinations(s+s1[len(s1)-l],l-1) combinations(s+s2[len(s2)-l],l-1) combinations(s,len(s1))
给你8种组合:
abc abf aec aef dbc dbf dec def