Nguồn: Bài viết trên Blog của tôi (định dạng tốt hơn)
Thí dụ
numbers = [1,2,3]
letters = 'abcd'
zip(numbers, letters)
# [(1, 'a'), (2, 'b'), (3, 'c')]
Đầu vào
Không hoặc nhiều lần lặp [1] (ví dụ: danh sách, chuỗi, tuple, từ điển)
Đầu ra (danh sách)
Tuple thứ 1 = (phần tử_1 của số, phần tử_1 của chữ cái)
Tuple thứ 2 = (số e_2, e_2 chữ cái)
Giáo dục
n-th tuple = (số e_n, chữ cái e_n)
- Danh sách n tuples: n là độ dài của đối số ngắn nhất (đầu vào)
- len (số) == 3 <len (chữ cái) == 4 → short = 3 → trả lại 3 bộ dữ liệu
- Độ dài mỗi tuple = # of args (tuple lấy một phần tử từ mỗi arg)
- args = (số, chữ cái); len (args) == 2 → tuple với 2 phần tử
i
th tuple = (Element_i arg1, Element_i arg2 Hoài, Element_i arg n
)
Vỏ cạnh
1) Chuỗi rỗng: len (str) = 0 = không có bộ dữ liệu
2) Chuỗi đơn: len (str) == 2 tuples với len (args) == 1 phần tử
zip()
# []
zip('')
# []
zip('hi')
# [('h',), ('i',)]
Zip trong hành động!
1. Xây dựng một từ điển [2] trong số hai danh sách
keys = ["drink","band","food"]
values = ["La Croix", "Daft Punk", "Sushi"]
my_favorite = dict( zip(keys, values) )
my_favorite["drink"]
# 'La Croix'
my_faves = dict()
for i in range(len(keys)):
my_faves[keys[i]] = values[i]
zip
là một giải pháp thanh lịch, rõ ràng và súc tích
2. In cột trong bảng
"*" [3] được gọi là "giải nén": f(*[arg1,arg2,arg3]) == f(arg1, arg2, arg3)
student_grades = [
[ 'Morty' , 1 , "B" ],
[ 'Rick' , 4 , "A" ],
[ 'Jerry' , 3 , "M" ],
[ 'Kramer' , 0 , "F" ],
]
row_1 = student_grades[0]
print row_1
# ['Morty', 1, 'B']
columns = zip(*student_grades)
names = columns[0]
print names
# ('Morty', 'Rick', 'Jerry', 'Kramer')
Tín dụng bổ sung: Giải nén
zip(*args)
được gọi là không giải mã được vì nó có tác dụng nghịch đảo zip
numbers = (1,2,3)
letters = ('a','b','c')
zipped = zip(numbers, letters)
print zipped
# [(1, 'a'), (2, 'b'), (3, 'c')]
unzipped = zip(*zipped)
print unzipped
# [(1, 2, 3), ('a', 'b', 'c')]
unzipped
: tuple_1 = e1 của mỗi bộ được nén. tuple_2 = e2 của mỗizipped
Chú thích
- Một đối tượng có khả năng trả lại từng thành viên của nó (ví dụ: danh sách [1,2,3], chuỗi 'Tôi thích codin', tuple (1,2,3), từ điển {'a': 1, 'b' : 2})
- {key1: value1, key2: value2 ...}
- Dịch vụ giải nén
*
Mã số:
# foo - function, returns sum of two arguments
def foo(x,y):
return x + y
print foo(3,4)
# 7
numbers = [1,2]
print foo(numbers)
# TypeError: foo() takes exactly 2 arguments (1 given)
print foo(*numbers)
# 3
*
đã lấy numbers
(1 arg) và hung đã giải nén ra '2 phần tử của nó thành 2 arg
zip
làm gì? Tại sao bạn nên có ba danh sách - chúng sẽ trông như thế nào?