2012-03-01 32 views
37

tôi cần phải làm bằng Python giống như:chỉ số Đếm sử dụng "cho" bằng Python

for (i = 0; i < 5; i++) {cout << i;} 

nhưng tôi không biết làm thế nào để sử dụng cho bằng Python để có được những chỉ số của các yếu tố trong một danh sách .

+0

Yếu tố nào? Danh sách gì? – Sean

+0

Tôi không đặt danh sách. những gì tôi cần là chỉ cần lấy chỉ mục của các phần tử trong một danh sách. Thông thường tôi sẽ sử dụng một FOR trong C++ hoặc Java để có được thông tin này. Trong trường hợp này, giả sử danh sách là ["a", "b", "c"], tôi cần chỉ mục a, b và c (0, 1 và 2). –

+3

trùng lặp của http://stackoverflow.com/questions/522563/accessing-the-index-in-python-for-loops – WolframH

Trả lời

58

Nếu bạn có một số danh sách đưa ra, và muốn để lặp qua các mục của nó chỉ số, bạn có thể sử dụng enumerate():

for index, item in enumerate(my_list): 
    print index, item 

Nếu bạn chỉ cần các chỉ số, bạn có thể sử dụng range():

for i in range(len(my_list)): 
    print i 
+0

tốt hơn để sử dụng xrange() thay vì phạm vi() trong trường hợp này;) – n1r3

+0

i mặc dù 'phạm vi (len (my_list))' nên tránh? (đối với tôi, tôi sẽ làm 'liệt kê' nhưng chỉ sử dụng' chỉ mục'). – neizod

+0

@ n1r3: Tốt hơn để dạy 'range()' trước 'xrange()'. –

0

Điều này?

for i in range(0,5): 
print(i) 
+0

Điều này sẽ phù hợp với tôi vì tôi đã biết rằng tôi sẽ luôn có 5 mục. :) Nhưng trong các trường hợp khác, tôi cần phải có được các chỉ số chưa biết về các phần tử. –

8

sử dụng enumerate:

>>> l = ['a', 'b', 'c', 'd'] 
>>> for index, val in enumerate(l): 
... print "%d: %s" % (index, val) 
... 
0: a 
1: b 
2: c 
3: d 
9

Nếu bạn có một danh sách hiện có và bạn muốn để lặp qua nó và theo dõi các chỉ số bạn có thể sử dụng chức năng enumerate. Ví dụ

l = ["apple", "pear", "banana"] 
for i, fruit in enumerate(l): 
    print "index", i, "is", fruit 
0

Trong additon để câu trả lời khác - rất thường xuyên, bạn không cần phải lặp sử dụng các chỉ số nhưng bạn chỉ có thể sử dụng một for-each biểu:

my_list = ['a', 'b', 'c'] 
for item in my_list: 
    print item 
+0

Trong trường hợp này nó sẽ trả lại cho tôi các mục, không phải chỉ mục của nó. =/ –

+0

quyền - sử dụng liệt kê() hoặc chỉ số trong phạm vi (len (my_list)) sau đó – alex

16

Chỉ cần sử dụng

for i in range(0, 5): 
    print i 

để lặp qua bộ dữ liệu của bạn và in từng giá trị.

Đối với các tập dữ liệu lớn, bạn muốn sử dụng xrange, có chữ ký rất giống nhau, nhưng hoạt động hiệu quả hơn cho các tập dữ liệu lớn hơn. http://docs.python.org/library/functions.html#xrange

1

Cách đơn giản nhất mà tôi sẽ thực hiện là;

i = -1 
for step in my_list: 
    i += 1 
    print(i) 

#OR - WE CAN CHANGE THE ORDER OF EXECUTION - SEEMS MORE REASONABLE 

i = 0 
for step in my_list: 
    print(i) #DO SOMETHING THEN INCREASE "i" 
    i += 1 
Các vấn đề liên quan