Hướng dẫn traverse meaning in python - nghĩa ngang trong python

answer

1373

Hướng dẫn traverse meaning in python - nghĩa ngang trong python

Sử dụng

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
9chức năng tích hợp:

>>> a = ["foo", "bar", "baz"]
>>> for i in reversed(a):
...     print(i)
... 
baz
bar
foo

Để cũng truy cập chỉ mục gốc, hãy sử dụng

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
0trong danh sách của bạn trước khi chuyển nó đến
def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
9:

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
0trả về một máy phát điện và máy phát điện không thể được đảo ngược, bạn cần phải chuyển đổi nó thành một máy phát điện
for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
3trước.

1373 hữu ích 5 bình luận chia sẻ 5 bình luận chia sẻ

answer

193

Bạn có thể làm:

for item in my_list[::-1]:
    print item

(Hoặc bất cứ điều gì bạn muốn làm trong vòng lặp for.)

Các

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
4lát đảo ngược danh sách trong vòng lặp for (nhưng sẽ không thực sự sửa đổi danh sách của bạn "vĩnh viễn").

193 hữu ích 4 bình luận chia sẻ 4 bình luận chia sẻ

answer

70

Nếu bạn cần chỉ mục vòng lặp và không muốn duyệt qua toàn bộ danh sách hai lần hoặc sử dụng thêm bộ nhớ, tôi sẽ viết một trình tạo.

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item

70 hữu ích 5 bình luận chia sẻ 5 bình luận chia sẻ

answer

70

Nó có thể được thực hiện như thế này:

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +

Vì vậy, dự đoán của bạn đã khá gần :) Hơi khó xử nhưng về cơ bản nó nói: bắt đầu với 1 nhỏ hơn

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
5, tiếp tục cho đến khi bạn đến ngay trước -1, theo từng bước của -1.

Fyi,

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
6chức năng này rất hữu ích vì nó cho phép bạn xem tài liệu cho một thứ gì đó từ bảng điều khiển Python, ví dụ:

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
7

70 hữu ích 3 bình luận chia sẻ 3 bình luận chia sẻ

answer

24

Các

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
8chức năng được xây dựng trong là tiện dụng:

for item in reversed(sequence):

Các tài liệu hướng dẫn cho đảo ngược giải thích những hạn chế của nó.

Đối với các trường hợp tôi phải đi ngược lại một trình tự cùng với chỉ mục (ví dụ: đối với các sửa đổi tại chỗ thay đổi độ dài trình tự), tôi có chức năng này xác định một mô-đun codeutil của tôi:

import itertools
def reversed_enumerate(sequence):
    return itertools.izip(
        reversed(xrange(len(sequence))),
        reversed(sequence),
    )

Điều này tránh tạo ra một bản sao của trình tự. Rõ ràng, những

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
8hạn chế vẫn được áp dụng.

24 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

answer

15

Một cách tiếp cận không có hàng nhập khẩu:

for i in range(1,len(arr)+1):
    print(arr[-i])

hoặc là

for i in arr[::-1]:
    print(i)

15 hữu ích 1 bình luận chia sẻ 1 bình luận chia sẻ

answer

11

Ngoài ra, bạn có thể sử dụng các hàm "phạm vi" hoặc "đếm". Như sau:

a = ["foo", "bar", "baz"]
for i in range(len(a)-1, -1, -1):
    print(i, a[i])

3 baz
2 bar
1 foo

Bạn cũng có thể sử dụng "count" từ itertools như sau:

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo
0

11 hữu ích 2 bình luận chia sẻ 2 bình luận chia sẻ

answer

10

Làm thế nào về việc không tạo lại một danh sách mới, bạn có thể làm bằng cách lập chỉ mục:

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo
1

HOẶC LÀ

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo
2

10 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

answer

9

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo
3

HOẶC LÀ

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo
4

10 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

answer

7

9 hữu ích 0 bình luận chia sẻ

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo
5

Tôi thích cách tiếp cận trình tạo một lớp lót: 0 bình luận chia sẻ

answer

4

7 hữu ích 0 bình luận chia sẻ

http://docs.python.org/tutorial/datastructures.html

Sử dụng

for item in reversed(sequence):
0và sau đó lặp lại như bạn thường làm. 1 bình luận chia sẻ

answer

4

4 hữu ích 1 bình luận chia sẻ

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo
6

Sử dụng

for item in reversed(sequence):
0và sau đó lặp lại như bạn thường làm. 1 bình luận chia sẻ

answer

4

4 hữu ích 1 bình luận chia sẻ

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo
7

vì những gì đáng giá bạn cũng có thể làm như thế này. rất đơn giản.

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo
8

Một cách biểu đạt để đạt được

for item in reversed(sequence):
1trong python 3:

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo
9

trong python 2:

Tôi không chắc tại sao chúng ta không có cách viết tắt cho điều này, ví dụ: 0 bình luận chia sẻ

answer

3

for item in my_list[::-1]:
    print item
0

hoặc tại sao chúng tôi không có

for item in reversed(sequence):
2 0 bình luận chia sẻ

answer

2

4 hữu ích 0 bình luận chia sẻ

for item in my_list[::-1]:
    print item
1

3 hữu ích 0 bình luận chia sẻ 1 bình luận chia sẻ

answer

2

chức năng đảo ngược có ích ở đây:

2 hữu ích 1 bình luận chia sẻ

for item in my_list[::-1]:
    print item
2

Nếu bạn cần chỉ mục và danh sách của bạn nhỏ, cách dễ đọc nhất là làm

for item in reversed(sequence):
3như câu trả lời được chấp nhận đã nói. Nhưng điều này tạo ra một bản sao danh sách của bạn, vì vậy nếu danh sách của bạn đang chiếm một phần lớn bộ nhớ của bạn, bạn sẽ phải trừ đi chỉ số được trả về
for item in reversed(sequence):
4từ đó
for item in reversed(sequence):
5.

for item in my_list[::-1]:
    print item
3

Nếu bạn chỉ cần làm điều đó một lần: 0 bình luận chia sẻ

answer

2

hoặc nếu bạn cần làm điều này nhiều lần, bạn nên sử dụng máy phát điện:

for item in my_list[::-1]:
    print item
4

2 hữu ích 0 bình luận chia sẻ

Tôi nghĩ cách thanh lịch nhất là biến đổi

for item in reversed(sequence):
6và
for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
8sử dụng máy phát điện sau

for item in my_list[::-1]:
    print item
5

tạo ra sự đảo ngược của

for item in reversed(sequence):
6trình lặp

for item in my_list[::-1]:
    print item
6

Nếu bạn chỉ cần làm điều đó một lần: 0 bình luận chia sẻ

answer

1

hoặc nếu bạn cần làm điều này nhiều lần, bạn nên sử dụng máy phát điện:

for item in my_list[::-1]:
    print item
7

2 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

answer

1

Tôi nghĩ cách thanh lịch nhất là biến đổi

for item in reversed(sequence):
6và
for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
8sử dụng máy phát điện sau

for item in my_list[::-1]:
    print item
8

2 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

answer

1

Tôi nghĩ cách thanh lịch nhất là biến đổi

for item in reversed(sequence):
6và
for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
8sử dụng máy phát điện sau

for item in my_list[::-1]:
    print item
9

tạo ra sự đảo ngược của

for item in reversed(sequence):
6trình lặp

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
0

Thí dụ:

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
1

2 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

answer

1

Tôi nghĩ cách thanh lịch nhất là biến đổi

for item in reversed(sequence):
6và
for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
8sử dụng máy phát điện sau

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
2

2 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

answer

0

Tôi nghĩ cách thanh lịch nhất là biến đổi

for item in reversed(sequence):
6và
for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +
8sử dụng máy phát điện sautheo kiểu đọc hiểu Danh sách

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
3

tạo ra sự đảo ngược của

for item in reversed(sequence):
6trình lặp 1 bình luận chia sẻ

answer

0

Thí dụ:

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
4

Kết quả: 0 bình luận chia sẻ

answer

0

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
5

tôi nghĩ cách này cũng đơn giản để làm điều đó ... đọc từ cuối và tiếp tục giảm cho đến khi độ dài của danh sách, vì chúng tôi không bao giờ thực hiện chỉ mục "kết thúc" do đó được thêm -1.

0 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

answer

0

Giả sử nhiệm vụ là tìm phần tử cuối cùng thỏa mãn một số điều kiện trong danh sách (tức là đầu tiên khi nhìn ngược lại), tôi nhận được các số sau:

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
6

Vì vậy, lựa chọn xấu nhất

import itertools
def reversed_enumerate(sequence):
    return itertools.izip(
        reversed(xrange(len(sequence))),
        reversed(sequence),
    )
2là nhanh nhất.

0 hữu ích 1 bình luận chia sẻ 1 bình luận chia sẻ

answer

-1

Giả sử nhiệm vụ là tìm phần tử cuối cùng thỏa mãn một số điều kiện trong danh sách (tức là đầu tiên khi nhìn ngược lại), tôi nhận được các số sau:

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
7

Vì vậy, lựa chọn xấu nhất

import itertools
def reversed_enumerate(sequence):
    return itertools.izip(
        reversed(xrange(len(sequence))),
        reversed(sequence),
    )
2là nhanh nhất.

def reverse_enum(L):
   for index in reversed(xrange(len(L))):
      yield index, L[index]

L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
   print index, item
8

0 hữu ích 1 bình luận chia sẻ

bạn có thể sử dụng máy phát điện: 0 bình luận chia sẻ