programing

루프를 위해 튜플은 어떻게 풀립니까?

skycolor 2023. 5. 17. 22:38
반응형

루프를 위해 튜플은 어떻게 풀립니까?

다음 코드를 우연히 발견했습니다.

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

반응형