루프를 위해 튜플은 어떻게 풀립니까?
다음 코드를 우연히 발견했습니다.
for i, a in enumerate(attributes):
labels.append(Label(root, text = a, justify = LEFT).grid(sticky = W))
e = Entry(root)
e.grid(column=1, row=i)
entries.append(e)
entries[i].insert(INSERT,"text to insert")
나는 이해할 수 없습니다.i, a
비트, 그리고 정보 검색for
어떤 유용한 결과도 얻지 못했습니다.코드를 실험하려고 하면 다음과 같은 오류가 발생합니다.
ValueError: 압축을 풀려면 값이 두 개 이상 필요합니다.
구글에서 더 자세히 알아볼 수 있는 더 구체적인 용어나 그것과 관련된 것이 무엇인지 아는 사람이 있습니까?
당신은 "튜플 언팩"을 구글에 검색할 수 있습니다.이것은 파이썬의 다양한 장소에서 사용할 수 있습니다.가장 간단한 것은 할당입니다.
>>> x = (1,2)
>>> a, b = x
>>> a
1
>>> b
2
for-loop에서는 유사하게 작동합니다.반복 가능한 각 요소가 다음과 같은 경우tuple
그런 다음 두 변수를 지정하면 루프의 각 요소가 두 변수에 대해 압축 해제됩니다.
>>> x = [(1,2), (3,4), (5,6)]
>>> for item in x:
... print "A tuple", item
A tuple (1, 2)
A tuple (3, 4)
A tuple (5, 6)
>>> for a, b in x:
... print "First", a, "then", b
First 1 then 2
First 3 then 4
First 5 then 6
그enumerate
함수는 반복 가능한 튜플을 생성하므로 이러한 방식으로 사용할 수 있습니다.
열거형은 기본적으로 for 루프 내에서 작업할 인덱스를 제공합니다.그래서:
for i,a in enumerate([4, 5, 6, 7]):
print(i, ": ", a)
인쇄 대상:
0: 4
1: 5
2: 6
3: 7
이 코드를 예로 들어 보겠습니다.
elements = ['a', 'b', 'c', 'd', 'e']
index = 0
for element in elements:
print element, index
index += 1
목록을 루프하고 인덱스 변수도 저장할 수 있습니다. enumerate()
동일한 작업을 수행하지만 보다 간결하게는 다음과 같습니다.
elements = ['a', 'b', 'c', 'd', 'e']
for index, element in enumerate(elements):
print element, index
그index, element
다음과 같은 이유로 표기가 필요합니다.enumerate
튜플을 반환합니다((1, 'a')
,(2, 'b')
두 개의 다른 변수로 압축 해제됩니다.
[i for i in enumerate(['a','b','c'])]
결과:
[(0, 'a'), (1, 'b'), (2, 'c')]
다음을 결합할 수 있습니다.for index,value
사용하여 튜플의 직접 풀림으로 접근합니다.( )
이것은 루프에서 중간 튜플 변수나 사전 없이 표현할 수 있는 여러 관련 값을 설정하려는 경우에 유용합니다.
users = [
('alice', 'alice@example.com', 'dog'),
('bob', 'bob@example.com', 'cat'),
('fred', 'fred@example.com', 'parrot'),
]
for index, (name, addr, pet) in enumerate(users):
print(index, name, addr, pet)
인쇄물
0 alice alice@example.com dog
1 bob bob@example.com cat
2 fred fred@example.com parrot
그enumerate
함수는 각 반복에서 요소의 인덱스를 포함하는 튜플을 생성하는 생성자 객체를 반환합니다.i
), 로 시작하는 번호:0
기본적으로 요소 자체와 결합됩니다(a
), 및for
루프를 사용하면 생성된 튜플의 두 필드에 모두 편리하게 액세스하고 변수 이름을 할당할 수 있습니다.
간단히 대답하면 루프 작동을 위해 의 목록에서 튜플의 압축을 풉니다.enumerate()는 (0, ('밥', 3)과 같이 현재 인덱스와 전체 현재 항목을 사용하여 튜플을 만듭니다.
이를 입증하기 위해 몇 가지 테스트 코드를 만들었습니다.
list = [('bob', 3), ('alice', 0), ('john', 5), ('chris', 4), ('alex', 2)]
print("Displaying Enumerated List")
for name, num in enumerate(list):
print("{0}: {1}".format(name, num))
print("Display Normal Iteration though List")
for name, num in list:
print("{0}: {1}".format(name, num))
Tuple 언팩의 단순함은 아마도 Python:D에 대해 제가 가장 좋아하는 것 중 하나일 것입니다.
let's get it through with an example:
list = [chips, drinks, and, some, coding]
i = 0
while i < len(list):
if i % 2 != 0:
print(i)
i+=1
output:[drinks,some]
now using EMUNERATE fuction:(precise)
list = [chips, drinks, and, coding]
for index,items in enumerate(list):
print(index,":",items)
OUTPUT: 0:drinks
1:chips
2:drinks
3:and
4:coding
언급URL : https://stackoverflow.com/questions/10867882/how-are-tuples-unpacked-in-for-loops
'programing' 카테고리의 다른 글
경로가 ':mypath'인 프로젝트를 루트 프로젝트 'myproject'에서 찾을 수 없습니다. (0) | 2023.05.17 |
---|---|
PostgreSQL에서 기존 테이블에 자동 증분 기본 키를 추가하는 방법은 무엇입니까? (0) | 2023.05.17 |
set -onnounset을 사용할 때 변수가 Bash에 설정되어 있는지 테스트 (0) | 2023.05.17 |
긴 SQL 쿼리를 즉시 종료/정지하는 방법은 무엇입니까? (0) | 2023.05.12 |
배열에서 무작위로 선택하려면 어떻게 해야 합니까? (0) | 2023.05.12 |