Nếu bạn thực sự muốn thay đổi các yếu tố, bạn có thể sử dụng modulo để đạp danh sách và gán lại các yếu tố sang vị trí đã thay đổi của chúng:
def shift[lst, shft=0]:
ln = len[lst]
for i, ele in enumerate[lst[:]]:
lst[[i + shft] % ln] = ele
return lst
In [3]: shift[ ['a','b','c','d'] , 1]
Out[3]: ['d', 'a', 'b', 'c']
In [4]: shift[ ['a','b','c','d'] , 2]
Out[4]: ['c', 'd', 'a', 'b']
In [5]: shift[ ['a','b','c','d'] , 3]
Out[5]: ['b', 'c', 'd', 'a']
Nếu bạn chỉ muốn một ca duy nhất, chỉ cần chuyển phần tử cuối cùng sang phía trước sẽ mở rộng danh sách:
def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
Cả hai thay đổi danh sách ban đầu.
Để tìm một vị trí của phần tử cụ thể, bạn có thể sử dụng phương thức chỉ mục [] của lớp danh sách với phần tử được truyền làm đối số. Hàm index [] trả về một số nguyên [vị trí] của kết hợp đầu tiên của phần tử được chỉ định trong danh sách.
Hãy nói rằng chúng tôi có một danh sách Python [hoặc mảng Numpy 1-D] và chúng tôi muốn thay đổi nó theo n vị trí. Hãy cùng xem một số cách về cách chúng ta có thể làm điều đó.
Sử dụng pop
x = [1,2,3,4,5] x.append[x.pop[0]] x
[2, 3, 4, 5, 1]
Giả sử rằng danh sách X là [1,2,3,4,5], hãy để xem cách chúng ta có thể thay đổi nó theo một vị trí phía trước.
Sử dụng bộ sưu tập deque
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x
deque[[5, 1, 2, 3, 4]]
Phương pháp này cho phép chúng ta thay đổi theo n phần tử trước cùng một lúc, sử dụng cả hai hướng, tiến và lùi. Chúng ta chỉ cần sử dụng phương thức
def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
4 trên đối tượng def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
5. Lưu ý rằng bạn có thể dễ dàng chuyển đổi đối tượng def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
5 thành def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
7 như def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
8 trong đó x là đối tượng def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
5.x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[-2] x
deque[[3, 4, 5, 1, 2]]
Lưu ý rằng chúng tôi cũng xoay nó về phía sau 2 bước:
Sử dụng cuộn numpy
import numpy x=numpy.arange[1,6] numpy.roll[x,1]
array[[5, 1, 2, 3, 4]]
Cuối cùng, chúng ta có thể sử dụng phương pháp
x = [1,2,3,4,5] x.append[x.pop[0]] x0 cho các mảng numpy. Nó cũng hỗ trợ cả hai hướng và n bước. Ví dụ:
def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
0def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
1 Để tìm một vị trí của phần tử cụ thể, bạn có thể sử dụng phương thức chỉ mục [] của lớp danh sách với phần tử được truyền làm đối số. Hàm index [] trả về một số nguyên [vị trí] của kết hợp đầu tiên của phần tử được chỉ định trong danh sách.
Xem thảo luận
Cải thiện bài viết
Để tìm một vị trí của phần tử cụ thể, bạn có thể sử dụng phương thức chỉ mục [] của lớp danh sách với phần tử được truyền làm đối số. Hàm index [] trả về một số nguyên [vị trí] của kết hợp đầu tiên của phần tử được chỉ định trong danh sách.
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Phương pháp số 1: Sử dụng Danh sách cắt và Nhà điều hành x = [1,2,3,4,5]
x.append[x.pop[0]]
x
1, sự kết hợp của các chức năng này có thể được sử dụng để thực hiện nhiệm vụ của một ca trong danh sách. Yếu tố cuối cùng được thêm vào phần còn lại của danh sách để đạt được nhiệm vụ này bằng cách sử dụng cắt lát.
The combination of these functions can be used to perform the task of a single shift in list. The last element is added to the rest of the list to achieve this task using slicing.
Các
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x1
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x2
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x3
x = [1,2,3,4,5] x.append[x.pop[0]] x1
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x5
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x6
x = [1,2,3,4,5] x.append[x.pop[0]] x2
x = [1,2,3,4,5] x.append[x.pop[0]] x3
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x9
deque[[5, 1, 2, 3, 4]]0
x = [1,2,3,4,5] x.append[x.pop[0]] x5
deque[[5, 1, 2, 3, 4]]221
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x1
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x2
x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[-2] x0
x = [1,2,3,4,5] x.append[x.pop[0]] x1
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x5
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x6
Output:
def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
2Phương pháp số 2: Sử dụng chức năng x = collections.deque[[1, 2, 3, 4, 5]]
x.rotate[-2]
x
4 này cũng có thể đạt được bằng cách sử dụng các chức năng sẵn có của Python viz. x = collections.deque[[1, 2, 3, 4, 5]]
x.rotate[-2]
x
5. Hàm pop trả về phần tử cuối cùng và được chèn ở phía trước bằng hàm chèn.
This functionality can also
be achieved using the inbuilt functions of python viz.
x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[-2] x5. The pop function returns the last element and that is inserted at front using the insert function.
Các
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x1
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x2
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x3
x = [1,2,3,4,5] x.append[x.pop[0]] x1
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x5
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x6
array[[5, 1, 2, 3, 4]]1
array[[5, 1, 2, 3, 4]]2
array[[5, 1, 2, 3, 4]]3
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x1
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x2
x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[-2] x0
x = [1,2,3,4,5] x.append[x.pop[0]] x1
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x5
import collections x = collections.deque[[1, 2, 3, 4, 5]] x.rotate[1] x6
Output:
def shift[lst]:
lst[0:1] = [lst.pop[],lst[0]]
return lst
2