Daftar daftar mengiris python

Halo, @kingluo. Tidak, mengiris mengembalikan daftar yang ada di dalam daftar asli. Bukan daftar yang disalin. Tapi, dalam kode Anda; . Jika Anda bekerja dengan parameter, Anda harus tahu bahwa perubahan yang dilakukan pada parameter tidak memengaruhi variabel asli yang Anda masukkan ke dalamnya. Untuk memahami ini dengan lebih baik, Anda dapat mencoba menjalankan kode dasar ini

def abc(number):
    number -= 5 #this change is made on the parameter, not on the original variable.

myNumber = 10
abc(myNumber)
print(myNumber)#prints 10, NOT 5.

Untuk mengubah variabel asli Anda, Anda dapat menggunakan kata kunci

def abc(number):
    number -= 5 #this change is made on the parameter, not on the original variable.
    return number

myNumber = 10
abc(myNumber)
print(myNumber)#still printing 10.
6. Dalam kode Anda, saya dapat melihat bahwa Anda juga telah menggunakan
def abc(number):
    number -= 5 #this change is made on the parameter, not on the original variable.
    return number

myNumber = 10
abc(myNumber)
print(myNumber)#still printing 10.
6 tetapi sebenarnya mengembalikan
def abc(number):
    number -= 5 #this change is made on the parameter, not on the original variable.
    return number

myNumber = 10
abc(myNumber)
print(myNumber)#still printing 10.
8. Karena, sintaks normalnya adalah

return something
_

Mari kita coba mengerjakannya pada kode contoh kita

def abc(number):
    number -= 5 #this change is made on the parameter, not on the original variable.
    return number

myNumber = 10
abc(myNumber)
print(myNumber)#still printing 10.
_

Kode ini masih mencetak 10, karena kata kunci

def abc(number):
    number -= 5 #this change is made on the parameter, not on the original variable.
    return number

myNumber = 10
abc(myNumber)
print(myNumber)#still printing 10.
6 hanya menetapkan nilai fungsi kita; . Untuk berhasil itu;

def abc(number):
    number -= 5 #this change is made on the parameter, not on the original variable.
    return number

myNumber = 10
myNumber = abc(myNumber) #assigning the value, which our function returns, to our original variable.
print(myNumber)#prints 5!

Saat ini, kami dapat menerapkan perubahan yang sama pada kode Anda, seperti ini

from typing import List


def buddle_sort(lst: List):
    if len(lst) < 2:
        return lst
    i = 0
    while i < len(lst) - 1:
        if lst[i+1] < lst[i]:
            lst[i], lst[i+1] = lst[i+1], lst[i]
        i += 1
    buddle_sort(lst[:len(lst)-1])


a = [100, 8, 3, 4, 6]
a = buddle_sort(a)
print(a)

a[len(a):] = [1, 2]
print(a)
_

Tetapi; . Karena, Anda memiliki fungsi rekursif. Dan, fungsi semacam itu berperilaku sedikit lebih berbeda dari yang Anda harapkan. Anda dapat melihat tentang fungsi rekursif. (silakan lihat sebelum membaca sisa posting saya)
Jadi, sulit untuk bekerja dengan fungsi rekursif. Untuk bekerja dengannya, Anda perlu menggunakan variabel eksternal, bukan parameter. Anda dapat menggunakan kata kunci

def abc(number):
    number -= 5 #this change is made on the parameter, not on the original variable.
    return number

myNumber = 10
myNumber = abc(myNumber) #assigning the value, which our function returns, to our original variable.
print(myNumber)#prints 5!
_0 dengan variabel global tetapi itu mungkin tidak cukup. Anda dapat membuatnya lebih berguna dan lebih mudah dengan dua fungsi pengurutan yang berbeda - satu adalah fungsi pengelola proses (utama), dan satu lagi adalah proses itu sendiri

from typing import List

def _buddle_sort(lst: List):#process
    i = 0
    while i < len(lst) - 1:
        if lst[i+1] < lst[i]:
            lst[i], lst[i+1] = lst[i+1], lst[i]
        i += 1
    return lst[:-1] # this is the same slice with lst[:len(lst)-1]

def buddle_sort(lst: List): #process-manager main buddle_sort method.
	while True:
		lst = _buddle_sort(lst)
		if len(lst)<2:
			return lst

a = [100, 8, 3, 4, 6]
a = buddle_sort(a)
print(a)

a[len(a):] = [1, 2]
print(a)

[EDIT. Saya baru menyadari bahwa melakukan hal ini juga dapat membuat kode berfungsi dengan baik

from typing import List


def buddle_sort(lst: List):
    if len(lst) < 2:
        return lst#changed
    i = 0
    while i < len(lst) - 1:
        if lst[i+1] < lst[i]:
            lst[i], lst[i+1] = lst[i+1], lst[i]
        i += 1
    return buddle_sort(lst[:len(lst)-1])#changed to prevent returning None when if block isn't executed 


a = [100, 8, 3, 4, 6]
a = buddle_sort(a)#changed
print(a)

a[len(a):] = [1, 2]
print(a)

]

Saya harap, tanggapan ini akan membantu Anda

Oleh Toprak Aslan melalui Diskusi tentang Python. org pada 27Mar2022 15. 22

Dan, dengan Python, dua cuplikan di bawah ini sama

a = [1,2,3]
func(a)
func([1,2,3])

Jadi, menurut saya, kita dapat mengatakan bahwa Python membuat salinan nilai variabel dan meneruskannya ke fungsi sebagai argumen

Bisakah daftar diiris dengan Python?

Singkatnya, slicing adalah alat yang fleksibel untuk membuat daftar baru dari daftar yang sudah ada. Python mendukung notasi irisan untuk semua jenis data berurutan seperti daftar, string, tupel, byte, bytearray, dan rentang . Juga, setiap struktur data baru dapat menambahkan dukungannya juga.

Bisakah item daftar diiris?

Untuk mengakses serangkaian item dalam daftar, Anda perlu memotong daftar . Salah satu cara untuk melakukannya adalah dengan menggunakan operator pengiris sederhana. Dengan operator ini Anda dapat menentukan di mana memulai pemotongan, di mana mengakhiri dan menentukan langkahnya.

Apakah penyambungan membuat daftar baru?

Tidak, mengiris mengembalikan daftar yang ada di dalam daftar asli . Bukan daftar yang disalin. Tapi, dalam kode Anda; . Jika Anda bekerja dengan parameter, Anda harus tahu bahwa perubahan yang dibuat pada parameter tidak memengaruhi variabel asli yang Anda masukkan ke dalamnya.