Saya memiliki sebuah integer dan daftar. Saya ingin membuat daftar baru mereka awal dengan variabel dan diakhiri dengan daftar.
Menulis a + list
saya mendapatkan kesalahan. Compiler handle a
sebagai integer, sehingga saya tidak bisa menggunakan append, atau memperpanjang baik.
Bagaimana anda melakukan ini?
>>>var=7
>>>array = [1,2,3,4,5,6]
>>>array.insert(0,var)
>>>array
[7, 1, 2, 3, 4, 5, 6]
Cara kerjanya:
array.insert(indeks, nilai)
Menyisipkan item pada posisi tertentu. Argumen pertama adalah indeks dari elemen yang untuk menyisipkan, jadi array.insert(0, x)
sisipan di bagian depan dari daftar, dan array.insert(len(array), x)
setara dengan array.append(x)
.Nilai-nilai negatif yang diperlakukan sebagai relatif terhadap akhir dari array.
Perhatikan bahwa jika anda mencoba untuk melakukan operasi yang sering, terutama di loop, daftar adalah salah struktur data.
Daftar ini tidak dioptimalkan untuk modifikasi di bagian depan, dan somelist.insert(0, sesuatu)
adalah sebuah O(n) operasi.
somelist.pop(0)
dan del somelist[0]
juga O(n) operasi.
Yang benar struktur data yang digunakan adalah deque
dari koleksi
modul. deques mengekspos antarmuka yang mirip dengan orang-orang dari daftar, tetapi dioptimalkan untuk modifikasi dari kedua endpoint. Mereka memiliki appendleft
metode untuk insersi di depan.
Demo:
In [1]: lst = [0]*1000
In [2]: timeit -n1000 lst.insert(0, 1)
1000 loops, best of 3: 794 ns per loop
In [3]: from collections import deque
In [4]: deq = deque([0]*1000)
In [5]: timeit -n1000 deq.appendleft(1)
1000 loops, best of 3: 73 ns per loop
Berdasarkan beberapa (minimal) tolok ukur menggunakan waktuhal
modul tampaknya berikut serupa jika tidak kinerja yang lebih baik dari jawaban yang diterima
new_lst = [a, *lst]
Seperti [a] + daftar
ini akan membuat daftar baru dan tidak bermutasi lst
.
Jika tujuan anda adalah untuk bermutasi daftar kemudian menggunakan lst.insert(0, a)
.
Tak satu pun dari ini bekerja untuk saya. Saya dikonversi elemen pertama untuk menjadi bagian dari rangkaian (a satu elemen seri), dan diubah kedua elemen ini juga menjadi seri, dan digunakan untuk menambahkan fungsi.
l = ((pd.Series(<first element>)).append(pd.Series(<list of other elements>))).tolist()