Khởi tạo danh sách trong Python

Khởi tạo danh sách trong Python
Lập trình Python

– Mảng là tập hợp các phần tử cùng một kiểu dữ liệu duy nhất như: mảng số nguyên, mảng số thực, mảng xâu,… Nhưng trong Python không có kiểu dữ liệu mảng mà sử dụng kiểu danh sách (list).

– Không giống như mảng, danh sách có thể chứa các phần tử khác kiểu nhau.

– Chỉ số của mảng bắt đầu từ 0 đến số phần tử – 1

2. Thao tác với dữ liệu kiểu list

a. Khởi tạo list

a.1. Dạng liệt kê: = [, ,…,]

Ví dụ:

s1 = “” #Tạo xâu rỗng s1 s2 = “Viet Nam” #Tạo xâu s2 có s2[0] = “V”, s2[1] = “i”, …., s2[7] = “m” #Duyệt qua từng phần tử của xâu: s = “Ha Noi Viet Nam” for i in s: print(i,end=“ “) #Xuất ra màn hình dòng chữ: H a N o i V i e t N a m

Lưu ý:

– Hàm len() trả về số phần tử của mảng  len(a) = 4, len(b) = 0, len(c) = 4

– Phép toán:

+ Nối mảng: +   d = a + c thì mảng d gồm 8 phần tử

+ Nhân bản phần tử:  *   e = a * 3 thì mảng e gồm 12 phần tử

a.2. Dạng mô tả (list comprehension): [ for  in ]

Lưu ý: ở đây có thể là list, range hoặc str

Ví dụ:

#1 a = [2, 3, 5, 7] #Tạo mảng a gồm 4 phần tử và a[0] = 2, a[1] = 3, a[2] = 5, a[3] = 7 b = [x**2 for x in a] #Tạo mảng b gồm 4 phần tử, b[0] = 4, b[1] = 9, b[2] = 25, b[3] = 49 #2 s = “2 3 5 8 10” c = [int(x) for x in s.split()] #Tạo mảng c gồm 5 phần tử, có giá trị là 2, 3, 5, 8, 10 #3 d = [x for x in range(0,11,2)] #Tạo mảng d gồm 6 phần tử, có giá trị lần lượt là 0, 2, 4, 6, 8, 10 #4 s = "12345" e = [int(x) for x in s] #Tạo mảng gồm 5 phần tử, có giá trị lần lượt là 1, 2, 3, 4, 5 #5 s = “2 3 5 8 10” d = list(map(int,s.split())) #Tạo mảng d gồm 5 phần tử, có giá trị là 2, 3, 5, 8, 10

Ngoài ra, ta có phương pháp sinh có điều kiện như sau:

  [ for  in if <điều kiện>]

Ví dụ:

#1 d = [x for x in range(0,11) if x%2==0] #Tạo mảng d gồm 6 phần tử, có giá trị lần lượt là 0, 2, 4, 6, 8, 10 #2 s = ‘Xin chao 123’ a = [int(ch) for ch in s if ord(ch)>=48 and ord(ch)<=57 #Tạo mảng số nguyên a gồm 3 phần tử, các phần tử là các số trong xâu s

b. Nhập dữ liệu từ bàn phím vào list

a.1. Dạng nhập từng phần tử (thường biết trước số phần tử của mảng)

Ví dụ: Nhập dữ liệu vào mảng số nguyên a gồm có n phần tử từ bàn phím

n = int(input(“Mời nhập số phần tử: “)); #Nhập số phần tử của mảng a = [] #Khởi tạo mảng rỗng for i in range(0,n): print(“Phần tử thứ”,i+1,”là:”,end=“ “) #Xuất dòng thông báo temp = int(input()) #Lấy giá trị nhập vào và chuyển sang kiểu số nguyên a.append(temp) #Thêm phần tử vào vị trí cuối cùng của mảng

a.2. Dạng nhập toàn bộ phần tử của mảng (thường chưa biết trước số phần tử của mảng)

Ví dụ: Nhập dữ liệu vào mảng số nguyên a từ bàn phím (các số cách nhau dấu cách)

a = list(map(int,input(“Mời nhập các phần tử của mảng: ”).split()))

c. Một số phương thức của list

HàmÝ nghĩa dụ
appenda.append(<đối tượng>)Bổ sung <đối tượng> vào cuối của một danh sách
cleara.clear()Xóa dữ liệu, đưa danh sách a thành rỗng
copya.copy()Trả về một danh sách có giá trị giống a (một bản sao của a)
extenda.extend(<đối tượng>)Mở rộng <đối tượng> vào cuối danh sách a
indexa.index()Trả về chỉ số index đầu tiên trong danh sách của
inserta.insert(,<đối tượng>)Chèn <đối tượng> vào danh sách ở trước vị trí index
popa.pop()Xóa và lấy ra phần tử cuối cùng của danh sách a (ngăn xếp)
removea.remove()Xóa đi phần tử đầu tiên có giá trị bằng
reversea.reverse()Trả lại danh sách có các phần tử ngược với phần tử a
sorta.sort([reverse=True/False])Sắp xếp lại danh sách a theo thứ tự tăng dần giá trị của các phần tử
Một số phương thức của list

3. Tìm hiểu kiểu dữ liệu list of list

– Mảng nhiều chiều là mảng mà mỗi phần tử của nó có kiểu mảng

– Cách tham chiếu đến từng phần tử của mảng 2 chiều (list of list) như sau:

a[i][j] à Tham chiếu phần tử có chỉ số i và j

  Trong đó i là chỉ số phần tử của mảng a và j là chỉ số phần tử của mảng a[i]

4. Thao tác với dữ liệu kiểu list of list

– Duyệt từng phần tử của list of list:

Ví dụ: Duyệt qua từng phần tử của mảng a gồm n phần tử, mỗi phần tử là mảng gồm m phần tử

for i in range(0,n): for j in range(0,m):

5. Phần bài tập về kiểu dữ liệu danh sách (list)

Câu 1: Viết chương trình nhập vào dãy các số nguyên bất kỳ, xuất ra màn hình tổng của các số trong dãy đó?

Câu 2: Viết chương trình nhập vào dãy các số bất kỳ, tìm số lớn nhất trong dãy số đó và xuất ra màn hình?

Câu 3: Viết chương trình nhập vào mảng gồm n số nguyên dương, hãy xuất ra màn hình tổng của các số lẻ trong mảng đó, với n>2

Câu 4: Viết chương trình nhập vào số nguyên dương n, xuất ra màn hình các số nguyên tố nhỏ hơn n, với n>2

Câu 5: Viết chương trình nhập vào bàn phím số nguyên dương n, xuất ra màn hình dãy số Fibonaxi. Biết rằng dãy Fibonaxi có dạng như sau: F0 = 1, F1 = 1, Fn = Fn-1 + Fn-2 với n>1

Câu 6: Viết chương trình dung phương pháp list comprehension để tạo các list sau:

a) Dãy các số là bội của 3 và nhỏ hơn 100

b) Dãy 10 số chính phương đầu tiên

Câu 7: Viết chương trình nhập vào dãy các số nguyên bất kỳ, kiểm tra và xuất ra màn hình xem dãy số đó có tạo thành cấp số cộng hay không?

Bài 8: Viết chương trình nhập vào danh sách gồm n người, mỗi người sẽ có các thông tin như: họ và tên, tuổi, giới tính và quê quán. Sau đó xuất ra màn hình thông tin của từng người đã nhập.

Câu 9: Viết chương trình nhập vào 2 ma trận vuông 5×5 và xuất ra màn hình ma trận tổng của hai ma trận đã nhập?

Xem tiếp Bài 7 – Kiểu dữ liệu từ điển (dict) trong ngôn ngữ lập trình Python

Khởi tạo danh sách trong Python
Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.

Khởi tạo danh sách trong Python
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới.
Khởi tạo danh sách trong Python
Facebook

Trong Python, List là một kiểu dữ liệu linh hoạt nhất.  Nó là dẫy (sequence) phần tử (element), nó cho phép loại bỏ, hoặc thêm các phần tử vào danh sách, đồng thời cho phép cắt lát (Slice) các phần tử.

Để viết một danh sách, bạn đặt các phần tử nằm trong cặp ngoặc vuông [ ] và ngăn cách nhau bởi dấu phẩy. Các phần tử trong danh sách được đánh chỉ số (index) từ trái sang phải bắt đầu từ chỉ số 0.

fruitList = ["apple", "apricot", "banana","coconut", "lemen"] otherList = [100, "one", "two", 3] print ("Fruit List:") print (fruitList) print (" --------------------------- ") print ("Other List:") print (otherList)

Fruit List: ['apple', 'apricot', 'banana', 'coconut', 'lemen'] --------------------------- Other List: [100, 'one', 'two', 3]

Sử dụng vòng lặp for để truy cập vào các phần tử của danh sách:

fruitList = ["apple", "apricot", "banana", "coconut", "lemen", "plum", "pear"] for fruit in fruitList : print ("Fruit: ", fruit)

Fruit: apple Fruit: apricot Fruit: banana Fruit: coconut Fruit: lemen Fruit: plum Fruit: pear

Truy cập thông qua chỉ số (index):

Bạn cũng có thể truy cập vào các phần tử của list thông qua chỉ số. Các phần tử của list được đánh chỉ số từ trái sang phải, bắt đầu từ 0.

fruitList = ["apple", "apricot", "banana", "coconut", "lemen", "plum", "pear"] print ( fruitList ) # Số phần tử. print ("Element count: ", len(fruitList) ) for i in range (0, len(fruitList) ) : print ("Element at ", i, "= ", fruitList[i] ) # Một danh sách con chứa các phần tử từ index 1 đến 4 (1, 2, 3) subList = fruitList[1: 4] # ['apricot', 'banana', 'coconut'] print ("Sub List [1:4] ", subList )

['apple', 'apricot', 'banana', 'coconut', 'lemen', 'plum', 'pear'] Element count: 7 Element at 0 = apple Element at 1 = apricot Element at 2 = banana Element at 3 = coconut Element at 4 = lemen Element at 5 = plum Element at 6 = pear Sub List [1:4] ['apricot', 'banana', 'coconut']

Bạn cũng có thể truy cập vào các phần tử của danh sách theo chỉ số âm (Negative index), các phần tử được đánh chỉ số từ phải sang trái với các giá trị -1, -2, ...

fruitList = ["apple", "apricot", "banana", "coconut", "lemen", "plum", "pear"] print ( fruitList ) print ("Element count: ", len(fruitList) ) print ("fruitList[-1]: ", fruitList[-1]) print ("fruitList[-2]: ", fruitList[-2]) subList1 = fruitList[-4: ] print ("\n") print ("Sub List fruitList[-4: ] ") print (subList1) subList2 = fruitList[-4:-2] print ("\n") print ("Sub List fruitList[-4:-2] ") print (subList2)

['apple', 'apricot', 'banana', 'coconut', 'lemen', 'plum', 'pear'] Element count: 7 fruitList[-1]: pear fruitList[-2]: plum Sub List fruitList[-4: ] ['coconut', 'lemen', 'plum', 'pear'] Sub List fruitList[-4:-2] ['coconut', 'lemen']

Ví dụ dưới đây là cách cập nhật List theo chỉ số (index):

years = [1991,1995, 1992] print ("Years: ", years) print ("Set years[1] = 2000") years[1] = 2000 print ("Years: ", years) print ( years ) print ("Append element 2015, 2016 to list") # Nối (append) thêm một phần tử vào cuối danh sách. years.append( 2015 ) years.append( 2016 ) print ("Years: ", years)

Years: [1991, 1995, 1992] Set years[1] = 2000 Years: [1991, 2000, 1992] [1991, 2000, 1992] Append element 2015, 2016 to list Years: [1991, 2000, 1992, 2015, 2016]

Bạn cũng có thể cập nhập giá trị cho một lát (Slice) các phần tử. Đây là cách để bạn cập nhập nhiều phần tử một lúc.

Một lát (Slice) là một vài phần tử có vị trí liên tiếp nhau trong một danh sách.

Khởi tạo danh sách trong Python

years = [ 1990 , 1991 , 1992 , 1993 , 1994 , 1995 , 1996 ] print ("Years: ", years) print ("Update Slice: years[1:5] = [2000, 2001]") years[1:5] = [ 2000 , 2001 ] print ("Years: ", years)

Years: [1990, 1991, 1992, 1993, 1994, 1995, 1996] Update Slice: years[1:5] = [2000, 2001] Years: [1990, 2000, 2001, 1995, 1996]

Để xóa một hoặc nhiều phần tử trong một danh sách (list) bạn có thể sử dụng lệnh del (del statement), hoặc sử dụng phương thức remove(). Ví dụ dưới đây sử dụng lệnh del để xóa một hoặc nhiều phần tử theo chỉ số.

years = [ 1990 , 1991 , 1992 , 1993 , 1994 , 1995 , 1996 ] print ("Years: ", years) print ("\n del years[6]") # Xóa phần tử tại vị trí có index = 6. del years[6] print ("Years: ", years) print ("\n del years[1:4]") # Xóa phần tử tại index = 1,2,3 del years[1:4] print ("Years: ", years)

Years: [1990, 1991, 1992, 1993, 1994, 1995, 1996] del years[6] Years: [1990, 1991, 1992, 1993, 1994, 1995] del years[1:4] Years: [1990, 1994, 1995]

Phương thức remove(value) loại bỏ phần tử đầu tiên trong danh sách có giá trị bằng với giá trị của tham số. Phương thức này có thể ném ra ngoại lệ (throw exception) nếu không tìm thấy phần tử nào để loại bỏ.

years = [ 1990 , 1991 , 1992 , 1993 , 1994 , 1993 , 1993 ] print ("Years: ", years) print ("\n years.remove(1993)") # Loại bỏ phần tử đầu tiên có giá trị 1993 trong danh sách years.remove(1993) print ("Years: ", years)

Years: [1990, 1991, 1992, 1993, 1994, 1993, 1993] years.remove(1993) Years: [1990, 1991, 1992, 1994, 1993, 1993]

Cũng giống như String, List có 3 toán tử +, * , in.

Toán tử Mô tả Ví dụ
+ Toán tử sử dụng để nối (concatenate) 2 List để tạo ra một List mới. [1, 2, 3[ + ["One","Two"]
--> [1, 2, 3, "One", "Two"]
* Toán tử sử dụng để nối (concatenate) nhiều bản copy của cùng một List. Và tạo ra một List mới. [1, 2] * 3
--> [1, 2, 1, 2, 1, 2]
in Kiểm tra một phần tử có nằm List hay không, kết quả trả về True hoặc False. "Abc" in ["One", "Abc"]
--> True

list1 = [1, 2, 3] list2 = ["One", "Two"] print ("list1: ", list1) print ("list2: ", list2) print ("\n") list12 = list1 + list2 print ("list1 + list2: ", list12) list2x3 = list2 * 3 print ("list2 * 3: ", list2x3) hasThree = "Three" in list2 print ("'Three' in list2? ", hasThree)

list1: [1, 2, 3] list2: ['One', 'Two'] list1 + list2: [1, 2, 3, 'One', 'Two'] list2 * 3: ['One', 'Two', 'One', 'Two', 'One', 'Two'] 'Three' in list2? False

Hàm Mô tả
cmp(list1, list2) So sánh các phần tử của cả 2 danh sách. Hàm này đã bị xóa bỏ khỏi Python3.
len(list) Trả về số phần tử của danh sách
max(list) Trả về phần tử trong danh sách với giá trị lớn nhất.
min(list) Trả về phần tử trong danh sách với giá trị nhỏ nhất.
list(seq) Chuyển đổi một tuple thành danh sách.

list1 = [1991, 1994, 1992] list2 = [1991, 1994, 2000, 1992] print ("list1: ", list1) print ("list2: ", list2) # Trả về số lượng phần tử của danh sách. print ("len(list1): ", len(list1) ) print ("len(list2): ", len(list2) ) # Giá trị lớn nhất trong danh sách (list). maxValue = max(list1) print ("Max value of list1: ", maxValue) # Giá trị nhỏ nhất trong danh sách (list). minValue = min(list1) print ("Min value of list1: ", minValue) # Tuple tuple3 = (2001, 2005, 2012) print ("tuple3: ", tuple3) # Chuyển đổi một Tuple thành List. list3 = list (tuple3) print ("list3: ", list3)

list1: [1991, 1994, 1992] list2: [1991, 1994, 2000, 1992] len(list1): 3 len(list2): 4 Max value of list1: 1994 Min value of list1: 1991 tuple3: (2001, 2005, 2012) list3: [2001, 2005, 2012]

Nếu các phần tử của một danh sách (list) là kiểu số, việc tìm giá trị nhỏ nhất và lớn nhất trong danh sách là dễ hiểu. Nhưng nếu danh sách chứa các phần tử có kiểu là object, chúng sẽ được so sánh dựa trên quy tắc mặc định của Python, hoặc bạn phải đặt ra một quy tắc cụ thể.

Phương thức Mô tả
list.append(obj) Nối (append) một đối tượng vào danh sách.
list.count(obj) Trả về số lần xuất hiện 'obj' trong danh sách
list.extend(seq) Nối nội dung của một dẫy (sequence) và danh sách
list.index(obj) Trả về chỉ số nhỏ nhất trong danh sách tìm thấy phần tử có giá trị là obj.
list.insert(index, obj) Trèn một phần tử vào danh sách tại chỉ số index.
list.pop([index]) Nếu có tham số index, loại bỏ và trả về phần tử tại vị trí index. Ngược lại loại bỏ và trả về phần tử cuối cùng của danh sách.
list.remove(obj) Loại bỏ phần tử đầu tiên có giá trị là obj ra khỏi danh sách.
list.reverse() Đảo ngược các phần tử trong danh sách
list.sort(key=None, reverse=False) Sắp xếp các phần tử theo khóa (key) cung cấp bởi tham số.

years = [ 1990 , 1991 , 1992 , 1993 , 1993 , 1993 , 1994 ] print ("Years: ", years) print ("\n - Reverse the list") # Đảo ngược danh sách. years.reverse() print ("Years (After reverse): ", years) aTuple = (2001, 2002, 2003) print ("\n - Extend: ", aTuple) years.extend(aTuple) print ("Years (After extends): ", years) print ("\n - Append 3000") years.append(3000) print ("Years (After appends): ", years) print ("\n - Remove 1993") years.remove(1993) print ("Years (After remove): ", years) print ("\n - years.pop()") # Loại bỏ phần tử cuối cùng của danh sách. lastElement = years.pop() print ("last element: ", lastElement) print ("\n") # Count print ("years.count(1993): ",years.count(1993) )

Years: [1990, 1991, 1992, 1993, 1993, 1993,1994] - Reverse the list Years (After reverse): [1994, 1993, 1993, 1993, 1992, 1991, 1990] - Extend: (2001, 2002, 2003) Years (After extends): [1994, 1993, 1993, 1993, 1992, 1991, 1990, 2001, 2002, 2003] - Append 3000 Years (After appends): [1994, 1993, 1993, 1993, 1992, 1991, 1990, 2001, 2002, 2003, 3000] - Remove 1993 Years (After remove): [1994, 1993, 1993, 1992, 1991, 1990, 2001, 2002, 2003, 3000] - years.pop(2001) last element: 3000 years.count(1993): 2