문제

나는 Python을 배우고 있으며이 예를 발견했습니다.

W = ((0,1,2),(3,4,5),(0,4,8),(2,4,6))
b = ['a','b','c','d','e','f','g','h','i']
for row in W:
    print b[row[0]], b[row[1]], b[row[2]]

어떤 인쇄 :

알파벳

데프

아 에이

CEG

나는 이유를 알아 내려고 노력하고있다!

예를 들어 확장 된 버전을 통해 처음으로 다음과 같이받습니다.

print b[(0,1,2)[0]], b[(0,1,2)[1]], b[(0,1,2)[2]]

그러나 나는 (0,1,2)가 어떻게 상호 작용하는지 이해하지 못한다. 누구든지 설명을 제공 할 수 있습니까? 감사.

(이것은 Tic Tac Toe 게임을위한 일부 코드의 약식 버전이며 잘 작동합니다.이 부분을 얻지 못합니다).

도움이 되었습니까?

해결책

튜플의 튜플 위에 반복됩니다 row 인쇄 할 때 3 가지 요소 튜플입니다. b 인덱스별로 목록입니다 row 튜플이 포함되어 있습니다.

아마도이 작업을 수행하는 약간 덜 어수선한 방법은 다음과 같습니다.

for f, s, t in W:
    print b[f], b[s], b[t]

다른 팁

촬영에서 (0,1,2) 아무것도하지 않습니다. 그것의 튜플이고 목록처럼 색인화 될 수 있습니다. b[(0,1,2)[0]] becomes b[0] ~부터 (0,1,2)[0] == 0.

첫 번째 단계에서는 Python이 수행됩니다 b[row[0]]b[(0,1,2)[0]]b[0]'a'

BTW, 한 번에 시퀀스에서 여러 항목을 얻으려면 연산자를 사용할 수 있습니다.

from operator import itemgetter
for row in W:
    print itemgetter(*row)(b)

튜플을 색인화하면 배열을 색인화 할 때와 마찬가지로 N 번째 요소를 추출합니다. 즉, 확장 된 버전입니다

print b[(0,1,2)[0]], b[(0,1,2)[1]], b[(0,1,2)[2]]

와 동등하다

print b[0], b[1], b[2]

즉, (0, 1, 2) 튜플의 0 번째 요소 ((0, 1, 2)[0])는 0입니다.

각 단계에서 모든 변수의 값을 기록하십시오. 결과가 옳습니다.

상호 작용 1 :

  • 행은 (0,1,2)입니다.
  • B [행 [0]], B [행 [1]], B [행 [2] B [(0,1,2) [0], (0,1,2) [1], (0,1,2) [2], == B [0], B [1], B입니다. [2

상호 작용 2 :

  • IS (3,4,5)
  • B [행 [0]], B [행 [1]], B [행 [2] IS B [3], B [4], B [5

파이썬 대화 형 쉘은 무슨 일이 일어나고 있는지 알 수 있도록 도와줍니다.

In [78]: W = ((0,1,2),(3,4,5),(0,4,8),(2,4,6))

In [79]: b = ['a','b','c','d','e','f','g','h','i']

In [81]: row=W[0]       # The first time throught the for-loop, row equals W[0]

In [82]: row
Out[82]: (0, 1, 2)

In [83]: row[0]
Out[83]: 0

In [84]: b[row[0]]
Out[84]: 'a'

In [85]: b[row[1]]
Out[85]: 'b'

In [86]: b[row[2]]
Out[86]: 'c'

for row in W:

첫 번째 튜플에 배치되었습니다 row ~이다 (0,1,2)

다시 말해서, W[0] == (0,1,2)

Therefore, since `row` == (0,1,2), then row[0] == 0

그래서 [0]th element of b == 'a'

b[0] == 'a'

등등...

b[1] == 'b'
b[2] == 'c'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top