Yanıtlar:
Evet, bir python listesindeki öğelerin sırası kalıcıdır.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lstve def fn_2(): print(fn_1())sipariş kaç kere veya nerede fn_1 () kullandığımdan bağımsız olarak DAİMA aynı mı olacak?
Kısacası, evet, düzen korunur. Uzun:
Genel olarak aşağıdaki tanımlar daima listeler gibi nesneler için geçerlidir:
Bir liste yinelenen unsurları içeren ve açıkça bunu yapmak için yapılmış sürece genellikle değişmemesini için belirli bir düzen vardır edebilir elemanların topluluğudur. yığınlar ve kuyruklar , öğe eklemek ve kaldırmak için belirli (genellikle sınırlı) davranış sağlayan liste türleridir (yığınlar LIFO, sıralar FIFO'dur). Listeler, şeylerin listelerinin pratik temsilleridir. Bir dize, sıralamanın önemli ( "abc" != "bca") olduğu ve dizenin içeriğindeki kopyalara kesinlikle izin verildiğinden (var "aaa"olabilir ve != "a") karakterlerin bir listesi olarak düşünülebilir .
Bir küme , kopyaları içeremeyen ve zaman içinde değişebilen veya değişmeyen kesin olmayan bir sıraya sahip öğelerden oluşan bir koleksiyondur. Kümeler , belirli bir şey seçiminin kapsamını tanımladıkları kadar şeylerin listesini temsil etmez . Kümenin iç yapısı, elemanlarının birbirine göre nasıl depolandığı, genellikle yararlı bilgiler taşımak anlamına gelmez. Bazı uygulamalarda, kümeler her zaman dahili olarak sıralanır; diğerlerinde sıralama basitçe tanımsızdır (genellikle bir karma fonksiyonuna bağlıdır).
Koleksiyon , (genellikle değişken) başka sayıda nesneyi depolamak için kullanılan herhangi bir nesneye atıfta bulunan genel bir terimdir. Hem listeler hem de kümeler bir koleksiyon türüdür. Tuples ve Diziler normalde koleksiyon olarak kabul edilmez. Bazı diller de haritaları (farklı nesneler arasındaki ilişkileri tanımlayan kapsayıcılar) bir tür toplama olarak görür.
Bu adlandırma düzeni, Python, C ++, Java, C # ve Lisp (sıralarını tutmayan listelerin özellikle felaket olacağı) dahil olmak üzere bildiğim tüm programlama dilleri için geçerlidir. Eğer kimse durumun böyle olmadığını biliyorsa, lütfen sadece söyleyin, cevabımı düzenleyeceğim. Belirli uygulamaların bu nesneler için C ++ ' da vektör ve ALGOL 68'de flex gibi diğer adları kullanabileceğini unutmayın (her iki liste; flex teknik olarak yalnızca yeniden boyutlandırılabilir bir dizidir).
İşaretin +burada nasıl çalıştığına dair ayrıntılar nedeniyle sizin durumunuzda herhangi bir karışıklık varsa , siparişin listeler için önemli olduğunu bilin ve aksi takdirde inanmak için çok iyi bir neden yoksa, liste işlemlerinin düzeni koruduğunu hemen hemen her zaman güvenle kabul edebilirsiniz. . Bu durumda, +işaret, dizeler için olduğu gibi davranır (gerçekten de sadece karakter listeleridir): bir listenin içeriğini alır ve bir başkasının içeriğinin arkasına yerleştirir.
Eğer sahipsek
list1 = [0, 1, 2, 3, 4]
list2 = [5, 6, 7, 8, 9]
Sonra
list1 + list2
Aynıdır
[0, 1, 2, 3, 4] + [5, 6, 7, 8, 9]
Hangi değerlendirir
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Çok gibi
"abdcde" + "fghijk"
üretir
"abdcdefghijk"
'Kümeleri' ve 'listeleri' karıştırıyorsunuz. Bir küme düzeni garanti etmez, ancak listeler bunu garanti eder.
Setler süslü parantez kullanılarak bildirilir: {}. Buna karşılık, listeler köşeli parantez kullanılarak bildirilir: [].
mySet = {a, b, c, c}
Siparişi garanti etmez, ancak liste şunları yapar:
myList = [a, b, c]
Sanırım ilginizi çekebilecek bir şey, girişlerin değişip değişmeyeceğidir, böylece 2 farklı bir sayı haline gelir. Zihninizi burada rahatlatabilirsiniz, çünkü Python'da tamsayı değişmez , yani oluşturulduktan sonra değişemezler.
Python'daki her şey değişmez değildir. Örneğin, listeler değiştirilebilir - oluşturulduktan sonra değişebilir. Örneğin, bir liste listeniz varsa
>>> a = [[1], [2], [3]]
>>> a[0].append(7)
>>> a
[[1, 7], [2], [3]]
Burada, ilk girişini değiştirdim a(ekledim 7). Biri etrafta bir şeyler karıştırmayı ve dikkatli değilseniz burada beklenmedik şeyler almayı hayal edebilir (ve aslında, Python'da bir şekilde programlamaya başladıklarında herkes böyle olur; sadece bu sitede arama yaparken " düzinelerce örneği görmek için).
Bir başka deyişle, değer işaret var x = x + [a]ve x.append(a)aynı şey değildir. İkincisi mutasyon geçirir xve ilki yeni bir liste oluşturur ve listeye atar x. Farkı görmek için, bir y = xşey eklemeden xve her birini denemeden önce ayarlamayı deneyin ve ikisinin yaptığı farka bakın y.
alist = [1,2,3]
I = 0
for item in aList:
if i<2:
aList.remove(item)
i+=1
bir liste
[2]
Ahlaki, liste tarafından yönlendirilen bir döngüdeki bir listeyi değiştirirken iki adım alır:
aList=[1,2,3]
i=0
for item in aList:
if i<2:
aList[i]="del"
i+=1
aList
['del', 'del', 3]
for i in range(2):
del aList[0]
aList
[3]