사용자가 만든 함수를 사용하여 목록의 모든 요소를 인쇄하려고합니다. 내가하고 싶은 것을목록 요소 및 색인 반환
y = [1,2,3]
def ash(list1):
for x in range(len(list)):
return list[x],x
는 인덱스를 사용하여 목록에있는 모든 값을 반환하지만, 내가 얻을 모두가 하나의 element.I이 요소가 인쇄하지만 반환하지 얻을 수있다.
사용자가 만든 함수를 사용하여 목록의 모든 요소를 인쇄하려고합니다. 내가하고 싶은 것을목록 요소 및 색인 반환
y = [1,2,3]
def ash(list1):
for x in range(len(list)):
return list[x],x
는 인덱스를 사용하여 목록에있는 모든 값을 반환하지만, 내가 얻을 모두가 하나의 element.I이 요소가 인쇄하지만 반환하지 얻을 수있다.
enumerate(list)
당신이 찾고있는 것입니다. (see doc). 또한, 함수를 호출 할 때 return
를 호출하는 것은 당신에게 목록의 첫 번째 값을 줄 것이다, 당신이 여기에 원하는 것은 아마 yield
statement입니다 : 이것은 당신이 변환해야하는 발전기 개체를 반환합니다
def ash(list):
for i,item in enumerate(list):
yield item,i
if __name__ == '__main__':
y = [1,2,3]
ys_with_indices = list(ash(y))
print ys_with_indices
하는 것으로 목록에서 list()를 호출하여 목록을 만듭니다. 또는 개별 값을 추가하는 일반 목록을 사용하면됩니다.
def ash(list):
items_with_indices = []
for i,item in enumerate(list):
items_with_indices.append((item,i))
return items_with_indices
if __name__ == '__main__':
y = [1,2,3]
ys_with_indices = ash(y)
print ys_with_indices
매우 첫 번째 반복으로 돌아갑니다. 오히려, 함수에리스트를 만들고 그리스트에 모든 튜플을 추가하고 마지막으로 그리스트를 반환해야합니다.
return [(elem, x) for x, elem in enumerate(list1)]
이전을 : 더 나은 당신은 단순히 목록 이해를 사용할 수
def ash(list1):
new_list = []
for x, elem in enumerate(list1):
new_list.append((elem,x))
return new_list
을 또는 :
그리고 지수와 요소 모두를 얻기를위한
, 당신은enumerate()
을 사용할 수 있습니다 두 가지 방법으로 목록을 메모리에 만듭니다. 코드와
def ash(list1):
for x, elem in enumerate(list1):
yield elem, x
일부 문제 : 당신이 다루는 매우 큰 목록이있는 경우에, 당신은 아마 yield
키워드를 사용하여, 발전기를 사용한다
range
를 사용하여 반복하지 마십시오. 목록을 직접 또는 여기에서 반복하십시오. enumerate
list
을 변수로 사용하지 마십시오. 같은 이름의 내장을 음영 처리합니다. 그것은 독자에게 혼란 스럽습니다.루프에서 돌아오고 있습니다. 이것이 첫 번째 반복 만받는 이유입니다.당신이 발전기로 기능을 켜 yield
를 사용, 연속적인 값을 반환 할 경우 : 당신이 정말로를 교체하려면
list(enumerate('abc')) #=> [(0, 'a'), (1, 'b'), (2, 'c')]
:
def ash(l):
for x in range(len(l)):
yield l[x],x
이 정말 enumerate
의 재 구현입니다 쌍 순서, 당신은 할 수 있습니다 :
[b,a for a,b in enumerate('abc')]
대체 구현 :,321 0
def ash(lst):
return [(lst[x],x) for x in range(0,len(lst))]
당신은 투플의 첫번째 값이 원래리스트의 요소리스트 내의 요소의 두번째 인덱스 튜플들의 목록을 얻을 것이다. y = [1,2,3]
의 경우 결과는 [(1, 0), (2, 1), (3, 2)]
색인을 기준으로 반복을해야하는 이유는 무엇입니까? – Marcin
좋은 Pythonic 솔루션입니다. – ThePhysicist
@Marcin은 목록의 뼈대와 요소를 얻습니다! –
입니다. 이는 값과 색인을 시퀀스에서 가져 오는 더 좋은 방법이지만 실제 문제는 해결되지 않습니다. – delnan
좋아, 나는 발전기에서 목록을 만드는 방법과 일반 목록을 사용하여 대안 버전을 보여주는 예제를 추가했습니다. – ThePhysicist
-1'list'를 변수 이름으로 사용합니다. 이해력을 사용하는 대신 목록에 추가. – Marcin