Rotasi kanan array dengan python

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

Rotasi kanan array dengan python

Itu harus diputar 2 maka array yang dihasilkan adalah,

Rotasi kanan array dengan python

Program kami harus memberikan output sebagai berikut

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

Array yang Diputar Keluaran adalah [3, 4, 5, 6, 1, 2]

Untuk melaksanakan tugas ini, kami akan mengikuti pendekatan ini

  1. Menggunakan array sementara yang akan menyimpan elemen yang digeser
  2. Mengiris array

Pendekatan 1. Dengan Menggunakan array sementara

Dalam pendekatan ini, kami akan mendeklarasikan array sementara yang akan menyimpan elemen array dalam urutan yang digeser

Input arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2, n =7

1) Store all the elements in the index range d to n in a temp array
   temp[] = [3, 4, 5, 6, 7]
2) Add all the elements in the index range 0 to d in the temp array
   arr[] = [3, 4, 5, 6, 7, 1, 2]
3) Copy the temp array to arr[]
   arr[] = [3, 4, 5, 6, 7, 1, 2]

Algoritma

Langkah 1- Tentukan fungsi untuk memutar array

Langkah 2- Deklarasikan variabel sementara

Langkah 3- Gunakan len() untuk menghitung panjang array dan menyimpannya dalam sebuah variabel

Langkah 4- Jalankan loop dari d ke n dan simpan elemen di setiap indeks dalam array temp

Langkah 5- Jalankan loop lain untuk menambahkan elemen lainnya ke array sementara

Langkah 6- Salin array temp ke array asli

Langkah 7- Mengembalikan array

Program Piton 1

Lihatlah program untuk memahami penerapan pendekatan yang disebutkan di atas

def rotateArray(a,d):
    temp = []
    n=len(a)
    for i in range(d,n):
        temp.append(a[i])
    i = 0
    for i in range (0,d):
        temp.append(a[i])
    a=temp.copy()
    return a
 
arr = [1, 2, 3, 4, 5, 6, 7]
print("Array after left rotation is: ", end=' ')
print(rotateArray(arr, 2))
_


Array setelah rotasi kiri adalah. [3, 4, 5, 6, 7, 1, 2]

Pendekatan 2. Mengiris

Dalam pendekatan ini, kita akan menggunakan konsep slicing. Karena array adalah tipe daftar dengan elemen dari tipe data yang sama, kita dapat menggunakan konsep pemotongan daftar di sini. Melalui pemotongan, kita dapat mengakses bagian mana pun dari array

Algoritma

Langkah 1- Tentukan fungsi untuk memutar elemen dalam daftar array

Langkah 2- Tentukan panjang array menggunakan len()

Langkah 3- Gunakan operator penyambungan (. ) untuk menyimpan elemen dari d ke n dan 0 ke d

Langkah 4- Gunakan ( + ) untuk menggabungkan kedua array

Langkah 5- Mengembalikan array

Program Python2

Lihatlah program untuk memahami penerapan pendekatan yang disebutkan di atas

# List slicing approch to rotate the array
def rotateArray(a,d):
    n=len(a)
    a[:]=a[d:n]+a[0:d]
    return a

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

print("Rotated list is")
print(rotateArray(arr,2)) 


Daftar yang diputar adalah
[3, 4, 5, 6, 1, 2]

Kesimpulan

Dalam tutorial ini, kita mempelajari dua pendekatan yang dapat kita gunakan untuk memutar elemen dalam array. Kami telah menggunakan konsep mengiris dalam tutorial kami. Kami juga dapat mendeklarasikan array sementara yang akan menyimpan elemen dalam urutan yang digeser. Untuk menambahkan data dalam larik sementara kami menggunakan append() dan untuk menyalin larik sementara ke larik asli kami menggunakan salin() dalam program kami

Pada artikel ini, kita akan belajar merotasi list dengan Python. Kami akan menggunakan beberapa fungsi bawaan, pendekatan sederhana, dan beberapa kode khusus juga. Pertama-tama mari kita lihat sekilas apa itu daftar di Python

Daftar Piton

Python memiliki tipe data bawaan yang disebut daftar. Ini seperti kumpulan array dengan metodologi berbeda. Data di dalam daftar dapat berupa tipe apa pun, katakanlah, bilangan bulat, string atau nilai float, atau bahkan tipe daftar. Daftar ini menggunakan nilai yang dipisahkan koma dalam tanda kurung siku untuk menyimpan data. Daftar dapat didefinisikan menggunakan nama variabel apa pun dan kemudian menetapkan nilai yang berbeda ke daftar dalam tanda kurung siku. Daftar ini dipesan, dapat diubah, dan memungkinkan nilai duplikat

list1 = ["Ram", "Arun", "Kiran"]
list2 = [16, 78, 32, 67]
list3 = ["apple", "mango", 16, "cherry", 3.4]

Rotasi daftar berarti mendorong dan menarik elemen dari kedua ujung daftar. Di rotasi kiri, setiap elemen daftar digeser ke sisi kirinya dengan satu posisi dan elemen pertama ditambahkan ke akhir daftar. Demikian pula, dalam rotasi kanan, setiap elemen daftar digeser ke sisi kanannya dengan satu posisi dan elemen terakhir ditambahkan ke awal daftar. Proses ini diikuti beberapa kali. Sekarang, kita akan membahas berbagai metode untuk merotasi daftar. Metode ini dapat melakukan Rotasi Kiri dan Rotasi Kanan dengan mengambil jumlah rotasi sebagai masukan

Contoh. Putar Daftar dengan menggunakan Teknik Pemotongan

Metode ini hanya memutar daftar dalam kode satu baris. Ini adalah metode yang paling umum dan efisien untuk mencapai rotasi daftar. Ini melakukan operasi pemotongan dengan mengambil jumlah rotasi. Dalam hal ini, ini memutar daftar l1, 3 spasi ke sisi kanan dan kiri. Itu bergabung dengan bagian irisan terakhir dari daftar dengan bagian irisan awal dari daftar. Anda dapat memberikan sejumlah rotasi sesuai dengan kebutuhan

#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print("Right rotation of List by 3 : " + str(l1)) 
_


Daftar Asli. [1, 4, 6, 7, 2]
Rotasi kiri Daftar dengan 3. [7, 2, 1, 4, 6]
Rotasi kanan Daftar dengan 3. [1, 4, 6, 7, 2]

Contoh. Putar Daftar menggunakan Pemahaman Daftar

Metode ini dilakukan dalam satu baris menggunakan List Comprehension. Dalam metode ini, kami hanya menugaskan kembali indeks ke setiap nilai ke posisi tertentu setelah rotasi. Ganti saja 3 dengan jumlah rotasi yang Anda inginkan

#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = [l1[(i + 3) % len(l1)] for i, x in enumerate(l1)] 
print ("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3 
l1 = [l1[(i - 3) % len(l1)] for i, x in enumerate(l1)] 
print ("Right rotation of List by 3 : " + str(l1)) 


Daftar Asli. [1, 4, 6, 7, 2]
Rotasi kiri Daftar dengan 3. [7, 2, 1, 4, 6]
Rotasi kanan Daftar dengan 3. [1, 4, 6, 7, 2]

Contoh. Putar Daftar menggunakan Modul Koleksi

Metode ini mengimpor deque dari modul collections Python. deque() kelas menyediakan fungsi

#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print("Right rotation of List by 3 : " + str(l1)) 
0 untuk melakukan Rotasi Daftar. Ini juga merupakan cara yang efisien untuk memutar daftar karena lebih cepat daripada teknik mengiris. Ini dioptimalkan untuk menarik dan mendorong kedua ujungnya

deque() - Dibutuhkan daftar sebagai argumen dan mengubahnya menjadi objek deque

#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print("Right rotation of List by 3 : " + str(l1)) 
_0 - Ini diterapkan pada objek deque dan menggunakan jumlah rotasi sebagai argumen. Itu hanya memutar daftar

Indeks negatif diberikan untuk melakukan rotasi ke kiri sedangkan indeks positif diberikan untuk melakukan rotasi ke kanan

from collections import deque 

#input list
l1 = [1, 4, 6, 7, 2] 
print ("Original List : " + str(l1)) 

#left rotate by 3 
l1 = deque(l1) 
l1.rotate(-3) 
l1 = list(l1) 
print ("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3
l1 = deque(l1) 
l1.rotate(3) 
l1 = list(l1) 
print ("Right rotation of List by 3 : " + str(l1)) 
_


Daftar Asli. [1, 4, 6, 7, 2]
Rotasi kiri Daftar dengan 3. [7, 2, 1, 4, 6]
Rotasi kanan Daftar dengan 3. [1, 4, 6, 7, 2]

Contoh. Rotasi Kanan Daftar dengan Menambahkan Elemen ke Daftar Baru

Metode ini meningkatkan Kompleksitas Ruang program. Metode ini membuat daftar kosong dan menyimpan daftar yang dimodifikasi ke dalam daftar baru. Cara kerjanya mirip dengan pemahaman daftar. Ini mengulangi daftar pertama satu per satu dan kemudian menempatkan elemen pada posisi yang sesuai dalam daftar kedua menggunakan fungsi

#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print("Right rotation of List by 3 : " + str(l1)) 
3

#number of rotations
num = 3
l1 = [1, 2, 3, 4, 5, 6] 
l2 = [] 

# Will add values from n to the new list 
for ele in range(len(l1) - num, len(l1)):
    l2.append(l1[ele])
# Will add the values before n to the end of new list
for ele in range(0, len(l1) - num):
    l2.append(l1[ele]) 

print("Right rotation of List by 3 : " + str(l2)) 


Rotasi kanan Daftar dengan 3. [4, 5, 6, 1, 2, 3]

Contoh. Rotasi kanan Daftar menggunakan len() dan Slicing Technique

Metode ini juga melibatkan teknik Slicing tetapi bersama dengan fungsi

#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print("Right rotation of List by 3 : " + str(l1)) 
4

#number of rotations
num = 3

#input list
l1 = [1, 2, 3, 4, 5, 6] 

l1 = (l1[len(l1) - num:len(l1)] + l1[0:len(l1) - num]) 

print("Right rotation of List by 3 : " + str(l1)) 


Rotasi kanan Daftar dengan 3. [4, 5, 6, 1, 2, 3]

Contoh. Rotasi Daftar menggunakan Modul NumPy

Modul Numpy Python menyediakan fungsi roll() bawaan untuk melakukan rotasi pada array. Pertama, ini membuat array dengan melewatkan rentang (nilai awal, nilai terakhir (dikecualikan)) menggunakan fungsi

#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print("Right rotation of List by 3 : " + str(l1)) 
5. Kemudian, larik dan jumlah rotasi diteruskan sebagai argumen ke fungsi
#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print("Right rotation of List by 3 : " + str(l1)) 
6

import numpy

arr = numpy.arange(1,10) 
print("Orignial array : ", arr)

#right rotate by 3
print("Right rotation by 3 : ", numpy.roll(arr,3))

#left rotate by 3
print("Left rotation by 3 : ", numpy.roll(arr,-3))


Susunan asli. [1 2 3 4 5 6 7 8 9]
Rotasi kanan sebesar 3. [7 8 9 1 2 3 4 5 6]
Rotasi kiri sebesar 3. [4 5 6 7 8 9 1 2 3]

Kesimpulan

Pada artikel ini, kami belajar untuk memutar daftar dengan menggunakan beberapa fungsi bawaan seperti deque(),

#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print("Right rotation of List by 3 : " + str(l1)) 
4,
#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print("Right rotation of List by 3 : " + str(l1)) 
3,
#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = [l1[(i + 3) % len(l1)] for i, x in enumerate(l1)] 
print ("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3 
l1 = [l1[(i - 3) % len(l1)] for i, x in enumerate(l1)] 
print ("Right rotation of List by 3 : " + str(l1)) 
0 dan juga menggunakan teknik
#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = [l1[(i + 3) % len(l1)] for i, x in enumerate(l1)] 
print ("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3 
l1 = [l1[(i - 3) % len(l1)] for i, x in enumerate(l1)] 
print ("Right rotation of List by 3 : " + str(l1)) 
1 dan
#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = [l1[(i + 3) % len(l1)] for i, x in enumerate(l1)] 
print ("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3 
l1 = [l1[(i - 3) % len(l1)] for i, x in enumerate(l1)] 
print ("Right rotation of List by 3 : " + str(l1)) 
2. Kami juga menggunakan beberapa kode khusus. Kami membahas bahwa dari semua metode
#input list
l1 = [1, 4, 6, 7, 2] 
print("Original List : " + str(l1)) 

#left rotate by 3 
l1 = [l1[(i + 3) % len(l1)] for i, x in enumerate(l1)] 
print ("Left rotation of List by 3 : " + str(l1)) 

#right rotate by 3 
l1 = [l1[(i - 3) % len(l1)] for i, x in enumerate(l1)] 
print ("Right rotation of List by 3 : " + str(l1)) 
3 adalah metode yang paling efisien untuk melakukan operasi rotasi daftar. Semua metode ini memiliki Kompleksitas Waktu sama dengan 0(n) karena satu iterasi tunggal pada elemen daftar

Bagaimana cara menggeser array ke kanan dengan Python?

Untuk menggeser bit elemen array integer ke kanan, gunakan numpy. metode right_shift() dengan Python Numpy. Bit digeser ke kanan x2. Karena representasi internal angka dalam format biner, operasi ini sama dengan membagi x1 dengan 2**x2.

Bagaimana Anda melakukan rotasi yang benar dengan Python?

Memasukkan. n = 2, Daftar_1 = [1, 2, 3, 4, 5, 6]
Keluaran. Daftar_1 = [5, 6, 1, 2, 3, 4]
Penjelasan. Kami mendapatkan daftar keluaran setelah memutar kanan (searah jarum jam) daftar yang diberikan oleh 2

Bagaimana Anda memutar array dengan benar?

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 memutar array di kiri dan kanan dengan Python?

Metode 1. .
Deklarasikan fungsi leftRotate(arr, d, n)
Di dalam fungsi itu jalankan loop untuk range(d)
Dan panggil leftRotateOne(arr, n)
Untuk fungsi leftRotatebyOne(arr, n)
Simpan arr[0] dalam variabel katakanlah temp
Jalankan loop untuk range(n-1), atur arr[i] = arr[i+1]
Terakhir atur arr[n-1] ke temp