thể trùng lặp:
Traverse a list in reverse order in PythonLàm thế nào để đảo ngược tuples bằng Python?
Đây có phải là có thể? Không cần phải có mặt, chỉ cần tìm cách để đảo ngược một bộ tuple để tôi có thể lặp lại nó.
thể trùng lặp:
Traverse a list in reverse order in PythonLàm thế nào để đảo ngược tuples bằng Python?
Đây có phải là có thể? Không cần phải có mặt, chỉ cần tìm cách để đảo ngược một bộ tuple để tôi có thể lặp lại nó.
Có hai cách thành ngữ để làm điều này:
reversed(x) # returns an iterator
hoặc
x[::-1] # returns a new tuple
Kể từ tuples là không thay đổi, không có cách nào để đảo ngược một tuple tại chỗ.
Edit: xây dựng trên bình luận @ LVC, sự lặp lại bởi reversed
sẽ tương đương với
def myreversed(seq):
for i in range(len(x) - 1, -1, -1):
yield seq[i]
tức là nó dựa trên chuỗi có chiều dài được biết đến để tránh phải thực sự đảo ngược tuple.
Vì nó hiệu quả hơn, tôi nghi ngờ nó sẽ là seq[::-1]
nếu bạn đang sử dụng tất cả và tuple nhỏ, và reversed
khi tuple lớn, nhưng hiệu suất trong python thường gây ngạc nhiên đo nó!
Cảm ơn, cái nào sẽ nhanh hơn? Âm thanh như iterator lặp lại theo yêu cầu? Nếu vậy, làm thế nào để làm điều này một cách hiệu quả mà không đảo ngược danh sách đầu tiên? Nó đảo ngược mỗi lần nó lặp lại? –
@JoanVenge 'reversed' sử dụng thực tế là' tuple' là chuỗi để bắt đầu ở cuối và làm việc ngược, cho mỗi phần tử theo yêu cầu trong khi theo dõi vị trí của nó. – lvc
@JoanVenge xem chỉnh sửa của tôi (ty lvc, chỉ cần mở rộng nhận xét của bạn) – tobyodavies
Bạn có thể sử dụng hàm dựng sẵn reversed
.
>>> x = (1, 2, 3, 4)
>>> y = reversed(x)
>>> tuple(y)
(4, 3, 2, 1)
Nếu bạn chỉ muốn lặp qua các tuple, bạn chỉ có thể sử dụng iterator được trả về bởi reversed
trực tiếp mà không cần chuyển đổi nó thành một tuple một lần nữa.
>>> for k in reversed(x):
... print k,
...
4 3 2 1
Tương tự như cách bạn sẽ đảo ngược một danh sách, ví dụ: s [:: - 1]
In [20]: s = (1, 2, 3)
In [21]: s[::-1]
Out[21]: (3, 2, 1)
và
In [24]: for i in s[::-1]:
....: print i
....:
3
2
1
Các bạn đã thử sử dụng 'reversed'? – Wes
Có rất nhiều bản sao của câu hỏi này, nhưng tất cả họ dường như được hỏi về chuỗi hoặc danh sách istead của tuples. Câu trả lời là như nhau. Ví dụ: http://stackoverflow.com/questions/931092/reverse-a-string-in-python http://stackoverflow.com/questions/6827413/reverse-does-not-work-on-a-python-literal http://stackoverflow.com/questions/529424/traverse-a-list-in-reverse-order-in-python – agf
Cảm ơn yeah tôi không thể tìm thấy một trong đó chính xác nói về đảo ngược tuples nhưng tôi thấy những gì bạn có ý nghĩa. –