Jika saya memiliki kode Python berikut
>>> x = []
>>> x = x + [1]
>>> x = x + [2]
>>> x = x + [3]
>>> x
[1, 2, 3]
Apakah x
dijamin akan selalu demikian [1,2,3]
, atau apakah urutan unsur-unsur sementara lainnya dimungkinkan?
Ya, urutan elemen dalam daftar python persisten.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lst
dandef fn_2(): print(fn_1())
apakah urutannya akan SELALU terlepas dari berapa kali atau di mana saya menggunakan fn_1 ()?Singkatnya, ya, pesanannya dipertahankan. Panjang:
Secara umum definisi berikut akan selalu berlaku untuk objek seperti daftar:
Sebuah daftar adalah kumpulan dari elemen-elemen yang dapat berisi elemen duplikat dan memiliki urutan didefinisikan yang umumnya tidak berubah kecuali secara eksplisit dibuat untuk melakukannya. tumpukan dan antrian adalah kedua jenis daftar yang memberikan perilaku spesifik (sering terbatas) untuk menambah dan menghapus elemen (tumpukan adalah LIFO, antrian menjadi FIFO). Daftar adalah representasi praktis dari daftar hal-hal. Sebuah string dapat dianggap sebagai daftar karakter, karena urutannya penting (
"abc" != "bca"
) dan duplikat dalam konten string tersebut diizinkan ("aaa"
dapat ada dan!= "a"
).Sebuah set adalah kumpulan dari elemen-elemen yang tidak dapat berisi duplikat dan memiliki tatanan non-pasti yang mungkin atau mungkin tidak berubah dari waktu ke waktu. Set tidak mewakili daftar hal-hal sebanyak itu menggambarkan sejauh mana suatu pilihan hal tertentu. Struktur internal set, bagaimana elemen-elemennya disimpan relatif satu sama lain, biasanya tidak dimaksudkan untuk menyampaikan informasi yang berguna. Dalam beberapa implementasi, set selalu diurutkan secara internal; di tempat lain pemesanannya tidak ditentukan (biasanya tergantung pada fungsi hash)
Koleksi adalah istilah umum yang merujuk pada objek apa pun yang digunakan untuk menyimpan sejumlah (biasanya variabel) objek lain. Baik daftar dan set adalah jenis koleksi. Tuples dan Arrays biasanya tidak dianggap sebagai koleksi. Beberapa bahasa menganggap peta (wadah yang menggambarkan hubungan antara objek yang berbeda) sebagai jenis koleksi juga.
Skema penamaan ini berlaku untuk semua bahasa pemrograman yang saya tahu, termasuk Python, C ++, Java, C #, dan Lisp (di mana daftar yang tidak menjaga urutannya akan menjadi bencana besar). Jika ada yang tahu di mana ini bukan masalahnya, katakan saja dan saya akan mengedit jawaban saya. Perhatikan bahwa implementasi spesifik dapat menggunakan nama lain untuk objek-objek ini, seperti vektor dalam C ++ dan flex dalam ALGOL 68 (kedua daftar; flex secara teknis hanya array yang cukup besar).
Jika ada kebingungan yang tersisa dalam kasus Anda karena kekhususan cara
+
tanda bekerja di sini, ketahuilah bahwa pesanan penting untuk daftar dan kecuali ada alasan yang sangat baik untuk percaya, jika tidak, Anda dapat dengan mudah selalu menganggap bahwa operasi daftar menyimpan pesanan. . Dalam kasus ini,+
tanda berperilaku seperti halnya string (yang sebenarnya hanyalah daftar karakter): ia mengambil konten daftar dan menempatkannya di belakang konten yang lain.Jika sudah
Kemudian
Sama dengan
Yang dievaluasi menjadi
Seperti
Menghasilkan
sumber
Anda membingungkan 'set' dan 'daftar'. Satu set tidak menjamin pesanan, tetapi daftar lakukan.
Set dinyatakan menggunakan kurung keriting:
{}
. Sebaliknya, daftar dinyatakan menggunakan kurung siku:[]
.Tidak menjamin pesanan, tetapi daftar tidak:
sumber
Saya kira satu hal yang mungkin mengenai Anda adalah apakah entri dapat berubah atau tidak, sehingga 2 menjadi angka yang berbeda, misalnya. Anda dapat menenangkan pikiran Anda di sini, karena dengan Python, integer tidak dapat diubah , artinya dapat berubah setelah dibuat.
Namun, tidak semua yang ada di Python tidak dapat diubah. Sebagai contoh, daftar bisa berubah --- mereka dapat berubah setelah dibuat. Jadi misalnya, jika Anda memiliki daftar daftar
Di sini, saya mengubah entri pertama
a
(saya menambahkan7
). Orang dapat membayangkan mengaduk-aduk berbagai hal, dan mendapatkan hal-hal yang tidak terduga di sini jika Anda tidak berhati-hati (dan memang, ini terjadi pada semua orang ketika mereka memulai pemrograman dengan Python dalam beberapa cara atau yang lain; cukup cari situs ini untuk "memodifikasi daftar sambil memutar melalui itu "untuk melihat lusinan contoh).Ini juga layak untuk ditunjukkan
x = x + [a]
danx.append(a)
bukan hal yang sama. Yang kedua bermutasix
, dan yang pertama membuat daftar baru dan menugaskannyax
. Untuk melihat perbedaannya, coba atury = x
sebelum menambahkan sesuatu kex
dan coba masing-masing, dan lihat perbedaan keduanyay
.sumber
aList = [1,2,3]
i = 0
sebuah daftar
[2]
Moralnya adalah ketika memodifikasi daftar dalam satu lingkaran yang didorong oleh daftar, mengambil dua langkah:
sumber
Ya, daftar dan tupel selalu dipesan sedangkan kamus tidak
sumber