Đầu tiên và quan trọng nhất: Python for
vòng là không thực sự giống như một vòng lặp C for
. Thay vào đó, chúng là For Each loops. Bạn lặp qua các phần tử của một iterable. range()
tạo ra một dãy số nguyên có thể lặp lại, cho phép bạn mô phỏng trường hợp sử dụng vòng lặp C for
phổ biến nhất.
Tuy nhiên, hầu hết thời gian bạn làm không phải muốn sử dụng range()
. Bạn sẽ vòng qua danh sách riêng của mình:
for elem in reversed(some_list):
# elem is a list value
Nếu bạn cần phải có một chỉ mục, bạn thường sử dụng enumerate()
để thêm nó vào vòng lặp:
for i, elem in reversed(enumerate(some_list)):
# elem is a list value, i is it's index in the list
Đối thực sự 'sôi nổi' vòng, sử dụng while
hoặc tạo chức năng máy phát điện riêng bạn:
def halved_loop(n):
while n > 1:
yield n
n //= 2
for i in halved_loop(10):
print i
in 10
, 5
, 2
. Bạn có thể mở rộng đến các chuỗi quá:
def halved_loop(sequence):
n = -1
while True:
try:
yield sequence[n]
except IndexError:
return
n *= 2
for elem in halved_loop(['foo', 'bar', 'baz', 'quu', 'spam', 'ham', 'monty', 'python']):
print elem
mà in:
python
monty
spam
foo
Nguồn
2013-07-30 10:19:52
đảo ngược (phạm vi (len (danh sách)) sẽ không giảm một nửa giá trị w Bạn có thể sử dụng danh sách hiểu ở vị trí của phạm vi (10).Hoặc người nào khác, sử dụng một vòng lặp while! –