반응형
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
반응형
'programing' 카테고리의 다른 글
[routerLink]와 routerLink의 차이점 (0) | 2020.10.21 |
---|---|
JetBrains WebIDE : PHP 변수 유형 힌팅? (0) | 2020.10.21 |
C ++ 구조체 용 함수 (0) | 2020.10.21 |
DialogFragment OnCreateView 대 OnCreateDialog의 사용자 지정 레이아웃 (0) | 2020.10.21 |
각 줄 끝에 텍스트 추가 (0) | 2020.10.21 |