이 메모리 기술은 많은 도움이됩니다.
[ <RETURNED_VALUE> <OUTER_LOOP1> <INNER_LOOP2> <INNER_LOOP3> ... <OPTIONAL_IF> ]
그리고 지금 당신에 대해 생각할 수있는 R eturn + O 유일한로 터의 루프 R ight O RDER
위에서 알 수 있듯이 3 루프에서도 포괄적 인 목록의 순서는 쉽습니다.
c=[111, 222, 333]
b=[11, 22, 33]
a=[1, 2, 3]
print(
[
(i, j, k) # <RETURNED_VALUE>
for i in a for j in b for k in c # in order: loop1, loop2, loop3
if i < 2 and j < 20 and k < 200 # <OPTIONAL_IF>
]
)
[(1, 11, 111)]
위의 내용은 다음과 같습니다.
for i in a: # outer loop1 GOES SECOND
for j in b: # inner loop2 GOES THIRD
for k in c: # inner loop3 GOES FOURTH
if i < 2 and j < 20 and k < 200:
print((i, j, k)) # returned value GOES FIRST
하나의 중첩 된 목록 / 구조를 반복하는 경우 기술은 동일 a
합니다.
a = [[1,2],[3,4]]
[i2 for i1 in a for i2 in i1]
which return [1, 2, 3, 4]
서로 중첩 된 레벨
a = [[[1, 2], [3, 4]], [[5, 6], [7, 8, 9]], [[10]]]
[i3 for i1 in a for i2 in i1 for i3 in i2]
which return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
등등
[x for b in a for x in b]
이것은 항상 파이썬에 관한 것입니다. 이 구문은 너무 거꾸로 있습니다. 의 일반적인 형식은x for x in y
항상 for 바로 뒤에 변수가 있으며 for 왼쪽의 표현식으로 전달됩니다. 이중 이해를하자마자 가장 최근에 반복 된 변수는 갑자기 너무 멀다. 어색하고 자연스럽게 읽지 않습니다