106
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Có thể trùng lặp: Cách hiệu quả để chuyển danh sách trong Python
Efficient way to shift a list in python
Tôi muốn xoay một danh sách python bằng một số lượng mục tùy ý ở bên phải hoặc bên trái [cái sau sử dụng đối số tiêu cực].
Một cái gì đó như thế này:
>>> l = [1,2,3,4]
>>> l.rotate[0]
[1,2,3,4]
>>> l.rotate[1]
[4,1,2,3]
>>> l.rotate[-1]
[2,3,4,1]
>>> l.rotate[4]
[1,2,3,4]
Làm thế nào điều này có thể được thực hiện?
hỏi ngày 26 tháng 2 năm 2012 lúc 22:27Feb 26, 2012 at 22:27
Drew Noakesdrew NoakesDrew Noakes
290K161 Huy hiệu vàng665 Huy hiệu bạc729 Huy hiệu Đồng161 gold badges665 silver badges729 bronze badges
10
def rotate[l, n]:
return l[-n:] + l[:-n]
Hướng thông thường hơn:
def rotate[l, n]:
return l[n:] + l[:n]
Example:
example_list = [1, 2, 3, 4, 5]
rotate[example_list, 2]
# [3, 4, 5, 1, 2]
Các đối số cho
def rotate[l, n]:
return l[-n:] + l[:-n]
0 là một danh sách và một số nguyên biểu thị sự thay đổi. Hàm tạo ra hai danh sách mới bằng cách sử dụng cắt và trả về việc kết nối các danh sách này. Hàm def rotate[l, n]:
return l[-n:] + l[:-n]
0 không sửa đổi danh sách đầu vào.
Đã trả lời ngày 26 tháng 2 năm 2012 lúc 22:30Feb 26, 2012 at 22:30
6
Nếu có thể, bạn có thể sử dụng
def rotate[l, n]:
return l[-n:] + l[:-n]
2 làm giải pháp:import collections
d = collections.deque[[1,2,3,4,5]]
d.rotate[3]
print d
>>> deque[[3, 4, 5, 1, 2]]
Như một phần thưởng, tôi hy vọng nó sẽ nhanh hơn danh sách được xây dựng.
Matt
20K17 Huy hiệu vàng60 Huy hiệu bạc106 Huy hiệu đồng17 gold badges60 silver badges106 bronze badges
Đã trả lời ngày 26 tháng 2 năm 2012 lúc 22:32Feb 26, 2012 at 22:32
Tomasztomasztomasz
Huy hiệu vàng 12k341 Huy hiệu bạc54 Huy hiệu đồng3 gold badges41 silver badges54 bronze badges
3
Hàm sau sẽ xoay danh sách
def rotate[l, n]:
return l[-n:] + l[:-n]
3, def rotate[l, n]:
return l[-n:] + l[:-n]
4 không gian ở bên phải:def rotate[l, x]:
return l[-x:] + l[:-x]
Lưu ý rằng điều này sẽ chỉ trả về danh sách ban đầu nếu
def rotate[l, n]:
return l[-n:] + l[:-n]
4 nằm ngoài phạm vi def rotate[l, n]:
return l[-n:] + l[:-n]
6. Để làm cho nó hoạt động cho tất cả các giá trị của def rotate[l, n]:
return l[-n:] + l[:-n]
4, sử dụng:def rotate[li, x]:
return li[-x % len[li]:] + li[:-x % len[li]]
Đã trả lời ngày 26 tháng 2 năm 2012 lúc 22:36Feb 26, 2012 at 22:36
Aaron Dufouraaron DufourAaron Dufour
Huy hiệu vàng 16,9K11 gold badge48 silver badges68 bronze badges
6
>>> l=[1,2,3,4]
>>> l[1:]+l[:1]
[2, 3, 4, 1]
>>> l=[1,2,3,4]
>>> l[2:]+l[:2]
[3, 4, 1, 2]
>>> l[-1:]+l[:-1]
[4, 1, 2, 3]
Một vòng quay chung
def rotate[l, n]:
return l[-n:] + l[:-n]
8 sang trái [Y dương trong cuộc gọi đến ____10] hoặc phải [âm y] sau đó:________số 8Nếu bạn muốn hướng xoay giống như ví dụ của bạn, chỉ cần phủ nhận
def rotate[l, n]:
return l[n:] + l[:n]
0 trong vòng quay.def rotate[l, y=1]:
if len[l] == 0:
return l
y = -y % len[l] # flip rotation direction
return l[y:] + l[:y]
Đã trả lời ngày 26 tháng 2 năm 2012 lúc 22:44Feb 26, 2012 at 22:44
Sói sóithe wolf
33K12 Huy hiệu vàng53 Huy hiệu bạc71 Huy hiệu đồng12 gold badges53 silver badges71 bronze badges