Python - Hiểu danh sách
Danh sách hiểu
Khả năng hiểu danh sách cung cấp một cú pháp ngắn hơn khi bạn muốn tạo một danh sách mới dựa trên các giá trị của danh sách hiện có.
Thí dụ:
Dựa trên danh sách trái cây, bạn muốn có một danh sách mới, chỉ chứa những trái cây có chữ "a" trong tên.
Nếu không có khả năng hiểu danh sách, bạn sẽ phải viết một for
câu lệnh với một bài kiểm tra điều kiện bên trong:
Thí dụ
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Với khả năng hiểu danh sách, bạn có thể làm tất cả những điều đó chỉ với một dòng mã:
Thí dụ
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
Cú pháp
newlist = [expression for item in iterable if condition == True]
Giá trị trả về là một danh sách mới, giữ nguyên danh sách cũ.
Tình trạng
Điều kiện giống như một bộ lọc chỉ chấp nhận các mục có giá trị
True
.
Thí dụ
Chỉ chấp nhận các mặt hàng không phải là "apple":
newlist = [x for x in fruits if x != "apple"]
Điều kiện
if x != "apple"
sẽ trả về True
cho tất cả các phần tử khác ngoài "apple", làm cho danh sách mới chứa tất cả các loại trái cây ngoại trừ "apple".
Điều kiện là tùy chọn và có thể được bỏ qua:
Thí dụ
Không có if
tuyên bố:
newlist = [x for x in fruits]
Có thể lặp lại
Có thể lặp lại có thể là bất kỳ đối tượng có thể lặp lại nào, như danh sách, bộ tuple, tập hợp, v.v.
Thí dụ
Bạn có thể sử dụng range()
hàm để tạo một tệp có thể lặp lại:
newlist = [x for x in range(10)]
Cùng một ví dụ, nhưng với một điều kiện:
Thí dụ
Chỉ chấp nhận các số thấp hơn 5:
newlist = [x for x in range(10) if x < 5]
Biểu hiện
Biểu thức là mục hiện tại trong lần lặp, nhưng nó cũng là kết quả mà bạn có thể thao tác trước khi nó kết thúc giống như một mục danh sách trong danh sách mới:
Thí dụ
Đặt các giá trị trong danh sách mới thành chữ hoa:
newlist = [x.upper()
for x in fruits]
Bạn có thể đặt kết quả theo bất kỳ điều gì bạn muốn:
Thí dụ
Đặt tất cả các giá trị trong danh sách mới thành 'xin chào':
newlist = ['hello' for x in fruits]
Biểu thức cũng có thể chứa các điều kiện, không giống như một bộ lọc, nhưng là một cách để thao túng kết quả:
Thí dụ
Trả lại "cam" thay vì "chuối":
newlist = [x if x != "banana" else "orange"
for x in fruits]
Biểu thức trong ví dụ trên cho biết:
"Trả hàng nếu không phải chuối, nếu là chuối thì trả lại hàng cam".