Bagaimana Anda menggeser elemen array yang tepat di python?

Kode berikut menunjukkan cara menggunakan np. roll() berfungsi untuk menggeser setiap elemen dalam array NumPy dua posisi ke kanan.
import numpy as np

#create NumPy array
data = np.array([1, 2, 3, 4, 5, 6])

#shift each element two positions to the right
data_new = np.roll(data, 2)

#view new NumPy array
data_new

array([5, 6, 1, 2, 3, 4])

Perhatikan bahwa setiap elemen digeser dua posisi ke kanan dan elemen di akhir larik dipindahkan begitu saja ke depan

Kita juga bisa menggunakan angka negatif di np. roll() berfungsi untuk menggeser elemen ke kiri

import numpy as np

#create NumPy array
data = np.array([1, 2, 3, 4, 5, 6])

#shift each element three positions to the left
data_new = np.roll(data, -3)

#view new NumPy array
data_new

array([4, 5, 6, 1, 2, 3])
_

Metode 2. Pergeseran Elemen (Izinkan Elemen Diganti)

Kami juga dapat mendefinisikan fungsi khusus untuk menggeser elemen dalam larik NumPy dan mengizinkan elemen yang digeser untuk diganti dengan nilai tertentu

Sebagai contoh, kita dapat mendefinisikan fungsi berikut untuk menggeser elemen dan mengganti elemen yang digeser dengan nilai 0

Dalam posting ini, kita akan belajar bagaimana memutar atau menggeser array ke kanan sebanyak n kali. Rotasi kanan atau pergeseran kanan berarti memindahkan semua elemen array ke arah kanan. Elemen paling kanan bergerak ke awal dan elemen lainnya dipindahkan ke kanan

Rotasi kanan atau Pergeseran kanan nomor larik

Mari kita lihat gambar di bawah ini

array right rotation

Di sini, kami memutar array dengan 1 ke kanan. Jadi, setiap elemen digeser 1 ke kanan dan elemen terakhir dipindahkan ke awal

Rotasi siklik telah dibahas dalam artikel sebelumnya. Namun terkadang, kami hanya memerlukan tugas tertentu, bagian dari rotasi i. e menggeser elemen terakhir ke elemen pertama dalam daftar. Ini memiliki aplikasi dalam pemrograman sehari-hari di utilitas tertentu. Mari kita bahas cara-cara tertentu untuk mencapai hal ini.  

Metode #1. Menggunakan pengiris daftar dan operator “+” Kombinasi dari fungsi-fungsi ini dapat digunakan untuk melakukan tugas satu shift dalam daftar. Elemen terakhir ditambahkan ke sisa daftar untuk mencapai tugas ini menggunakan slicing.  

Python3




# Python3 code to demonstrate

# shift last element to first

# using list slicing and "+" operator

 

# initializing list

test_list=

The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after shift is : [12, 1, 4, 5, 6, 7, 8, 9]
0
The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after shift is : [12, 1, 4, 5, 6, 7, 8, 9]
1
The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after shift is : [12, 1, 4, 5, 6, 7, 8, 9]
2
The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after shift is : [12, 1, 4, 5, 6, 7, 8, 9]
3
The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after shift is : [12, 1, 4, 5, 6, 7, 8, 9]
2
The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after shift is : [12, 1, 4, 5, 6, 7, 8, 9]
_______________________________________________________________________________________________________________________________________________________________________________________________________________g

Pendekatan #1. Lintasi daftar pertama satu per satu dan kemudian letakkan elemen di tempat yang diperlukan dalam daftar kedua.  

Python3




# Python program to right rotate a list by n

 

# Returns the rotated list

 

def rightRotate(lists, num):

    output_list

[4, 5, 6, 1, 2, 3]
0
[4, 5, 6, 1, 2, 3]
1

 

    

[4, 5, 6, 1, 2, 3]
3

    

[4, 5, 6, 1, 2, 3]
5
[4, 5, 6, 1, 2, 3]
6
[4, 5, 6, 1, 2, 3]
7
[4, 5, 6, 1, 2, 3]
8
[4, 5, 6, 1, 2, 3]
9
[4, 5, 6, 1, 2, 3]
0
[4, 5, 6, 1, 2, 3]
1
[4, 5, 6, 1, 2, 3]
2
[4, 5, 6, 1, 2, 3]
3________19______0________19_____5

[4, 5, 6, 1, 2, 3]
6
[4, 5, 6, 1, 2, 3]
7

 

    

[4, 5, 6, 1, 2, 3]
_9

    

[4, 5, 6, 1, 2, 3]
1

    

[4, 5, 6, 1, 2, 3]
5
[4, 5, 6, 1, 2, 3]
6
[4, 5, 6, 1, 2, 3]
7
[4, 5, 6, 1, 2, 3]
8
[4, 5, 6, 1, 2, 3]
9
[4, 5, 6, 1, 2, 3]
8
[4, 5, 6, 1, 2, 3]
9
[4, 5, 6, 1, 2, 3]
0
[4, 5, 6, 1, 2, 3]
1
[4, 5, 6, 1, 2, 3]
2 ________32______2 ________132______

[4, 5, 6, 1, 2, 3]
6
[4, 5, 6, 1, 2, 3]
7

 

    # Python program to right rotate a list by n7 output_list

 

 

# Python program to right rotate a list by n_9

# Returns the rotated list0

[4, 5, 6, 1, 2, 3]
0 # Returns the rotated list2

# Returns the rotated list3

[4, 5, 6, 1, 2, 3]
0 # Returns the rotated list5________1333_______6
[4, 5, 6, 1, 2, 3]
9________1333____________
[4, 5, 6, 1, 2, 3]
_________________________________________________________________________________________

 

________134

The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after shift is : [12, 1, 4, 5, 6, 7, 8, 9]
_134_______9

Keluaran

[4, 5, 6, 1, 2, 3]

Kompleksitas waktu. Pada)

Pendekatan #2. Pendekatan lain untuk mengatasi masalah ini adalah dengan menggunakan teknik slicing. Salah satu cara mengiris list adalah dengan menggunakan metode len().  

Python3




rightRotate(lists, num):_0

rightRotate(lists, num):_1

________135

The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after shift is : [12, 1, 4, 5, 6, 7, 8, 9]
_19_______0 # Returns the rotated list2

 

# Returns the rotated list3

[4, 5, 6, 1, 2, 3]
0 # Returns the rotated list5________1333_______6
[4, 5, 6, 1, 2, 3]
9________1333____________
[4, 5, 6, 1, 2, 3]
_________________________________________________________________________________________

# Returns the rotated list3

[4, 5, 6, 1, 2, 3]
0 output_list2
[4, 5, 6, 1, 2, 3]
0output_list4
[4, 5, 6, 1, 2, 3]
2 output_list6
[4, 5, 6, 1, 2, 3]
0output_list8

output_list9

[4, 5, 6, 1, 2, 3]
00
[4, 5, 6, 1, 2, 3]
01
[4, 5, 6, 1, 2, 3]
8
[4, 5, 6, 1, 2, 3]
03
[4, 5, 6, 1, 2, 3]
0output_list4
[4, 5, 6, 1, 2, 3]
2
[4, 5, 6, 1, 2, 3]
07

def8output_list4

Keluaran

[4, 5, 6, 1, 2, 3]

Pendekatan #3. Dalam metode di atas, n elemen terakhir dari list_1 diambil dan kemudian elemen list_1 yang tersisa. Cara lain adalah tanpa menggunakan metode len().   

Piton




[4, 5, 6, 1, 2, 3]
_10

________135

The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after shift is : [12, 1, 4, 5, 6, 7, 8, 9]
_19_______0 # Returns the rotated list2

 

# Returns the rotated list3

[4, 5, 6, 1, 2, 3]
0 # Returns the rotated list5________1333_______6
[4, 5, 6, 1, 2, 3]
9________1333____________
[4, 5, 6, 1, 2, 3]
_________________________________________________________________________________________

[4, 5, 6, 1, 2, 3]
29
[4, 5, 6, 1, 2, 3]
30
[4, 5, 6, 1, 2, 3]
0
[4, 5, 6, 1, 2, 3]
32

    rightRotate(lists, num):2

[4, 5, 6, 1, 2, 3]
0
[4, 5, 6, 1, 2, 3]
36
[4, 5, 6, 1, 2, 3]
37
[4, 5, 6, 1, 2, 3]
38
[4, 5, 6, 1, 2, 3]
0
[4, 5, 6, 1, 2, 3]
40

# Returns the rotated list3

[4, 5, 6, 1, 2, 3]
0 output_list2
[4, 5, 6, 1, 2, 3]
2
[4, 5, 6, 1, 2, 3]
45
[4, 5, 6, 1, 2, 3]
00
[4, 5, 6, 1, 2, 3]
47
[4, 5, 6, 1, 2, 3]
2
[4, 5, 6, 1, 2, 3]
07

 

def8output_list4

Keluaran

[4, 5, 6, 1, 2, 3]

Kompleksitas waktu. Pada)

Catatan. daftar_1[. ] akan mengembalikan seluruh daftar karena ruang kosong di sebelah kiri operator pengiris mengacu pada awal daftar i. e 0 dan ruang kosong di sebelah kanan mengacu pada posisi akhir daftar.  

Pendekatan 4. Satu pendekatan tambahan yang dapat digunakan untuk memutar daftar dengan posisi n adalah dengan menggunakan koleksi. modul deque. Modul ini menyediakan daftar tertaut ganda yang mendukung penyisipan dan penghapusan cepat di kedua ujung daftar, serta operasi rotasi cepat

Untuk memutar daftar dengan n posisi, Anda dapat menggunakan metode rotate() dari objek deque. Metode ini memutar elemen daftar dengan jumlah posisi yang ditentukan ke kanan. Sebagai contoh

Python3




[4, 5, 6, 1, 2, 3]
52
[4, 5, 6, 1, 2, 3]
53
[4, 5, 6, 1, 2, 3]
54
[4, 5, 6, 1, 2, 3]
55

 

[4, 5, 6, 1, 2, 3]
_56

# Returns the rotated list3

[4, 5, 6, 1, 2, 3]
0 # Returns the rotated list5________1333_______6
[4, 5, 6, 1, 2, 3]
9________1333____________
[4, 5, 6, 1, 2, 3]
_________________________________________________________________________________________

[4, 5, 6, 1, 2, 3]
72
[4, 5, 6, 1, 2, 3]
0
[4, 5, 6, 1, 2, 3]
74

 

[4, 5, 6, 1, 2, 3]
_75

[4, 5, 6, 1, 2, 3]
_76# Returns the rotated list2
[4, 5, 6, 1, 2, 3]
78

 

[4, 5, 6, 1, 2, 3]
_79

# Returns the rotated list3

[4, 5, 6, 1, 2, 3]
0
[4, 5, 6, 1, 2, 3]
82
[4, 5, 6, 1, 2, 3]
83

 

def8

[4, 5, 6, 1, 2, 3]
85
[4, 5, 6, 1, 2, 3]
86

Keluaran

[4, 5, 6, 1, 2, 3]

Kompleksitas waktu deque. metode rotate() adalah O(n), karena melibatkan pemindahan semua elemen dalam deque dengan sejumlah posisi tertentu. Kompleksitas waktu konstruktor list() dan deque() juga O(n), karena melibatkan iterasi melalui semua elemen dalam daftar input atau deque dan membuat daftar baru atau deque dengan elemen tersebut

Kompleksitas ruang bantu kode juga O(n), karena melibatkan pembuatan deque baru dan daftar baru, keduanya memiliki ukuran yang sama dengan daftar input

Bagaimana Anda menggeser nilai dalam array dengan Python?

Untuk menggeser bit elemen array dari array 2D ke kiri, gunakan numpy. left_shift() dengan Python Numpy. Bit digeser ke kiri dengan menambahkan x2 0s di sebelah kanan x1. Karena representasi internal angka dalam format biner, operasi ini setara dengan mengalikan x1 dengan 2**x2.

Bagaimana Anda menggeser elemen yang tepat dalam array?

Larik dapat diputar ke kanan dengan menggeser elemennya ke posisi di sebelahnya yang dapat dilakukan dengan memutar balik larik dalam urutan terbalik (perulangan akan dimulai dari panjang . .

Bagaimana Anda menggeser elemen dengan Python?

Menggeser elemen ke Kiri. Menggunakan metode pop() dengan Python, kita menghapus elemen pertama dari daftar L. Kemudian, metode append menambahkan nilai dalam variabel g ke daftar L. Karenanya semua elemen digeser ke kiri ke indeks sebelumnya.

Bagaimana Anda memutar kanan dengan Python?

Langkah 1. Masukkan string. Langkah 2. Pisahkan string menjadi dua bagian pertama & kedua, untuk rotasi kiri Lpertama = str[0. d] dan Ldetik = str[d. ]. Untuk Rotasi Kanan Rfirst = str[0. len(str)-d] dan Rdetik = str[len(str)-d. ] . Langkah 3. Sekarang gabungkan kedua bagian ini kedua + pertama sesuai dengan itu.