programing

List Comprehension을 사용하는 중첩 For 루프

nasanasas 2020. 10. 21. 08:10
반응형

List Comprehension을 사용하는 중첩 For 루프


두 개의 문자열이 '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 를 사용할 수도 있습니다 . 특히 입력 iterable이 더 많을 때 더 명확하다고 생각합니다.

itertools.product('abc', 'def', 'ghi')

재귀도 시도하십시오.

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

참고 URL : https://stackoverflow.com/questions/3633140/nested-for-loops-using-list-comprehension

반응형