Python ngược lại với zip
Giả sử chúng ta có hai danh sách, một danh sách bao gồm tên và danh sách còn lại bao gồm họ. Chúng tôi muốn bằng cách nào đó kết hợp tên đầu tiên với họ tương ứng dưới dạng bộ dữ liệu. Nói cách khác, chúng tôi muốn kết hợp các phần tử từ nhiều lần lặp có cùng chỉ mục với nhau trong một danh sách các bộ dữ liệu Show
list_1 = [‘Jane’, ‘John’, ‘Jennifer’] hàm zip()Chúng ta có thể thực hiện điều này với chức năng, đây là chức năng python được tích hợp sẵn. Hàm zip() được đặt tên do cơ chế tương tự của nó như các khóa kéo vật lý. Khi bạn nén một cái gì đó, bạn mang cả hai bên lại với nhau. Và đó là cách chức năng zip() hoạt động. Nó mang các phần tử của cùng một chỉ mục từ nhiều đối tượng có thể lặp lại với nhau dưới dạng các phần tử của cùng một bộ dữ liệu
Hàm zip() nhận các iterables làm đối số, chẳng hạn như danh sách, tệp, bộ dữ liệu, bộ, v.v. Sau đó, hàm zip() sẽ tạo một trình vòng lặp tổng hợp các phần tử từ mỗi vòng lặp được truyền vào. Nói cách khác, nó sẽ trả về một bộ lặp của các bộ lặp, trong đó bộ thứ i sẽ chứa phần tử thứ i từ mỗi bộ lặp được truyền vào. Iterator này sẽ dừng khi iterable đầu vào ngắn nhất đã cạn kiệt Sử dụng hàm zip()Chà, dựa trên mục tiêu trên, chúng tôi có hai danh sách (là các đối tượng có thể lặp lại) và chúng tôi muốn kết hợp các phần tử được lập chỉ mục giống nhau từ mỗi danh sách này lại với nhau. Vì vậy, chúng ta có thể sử dụng hàm zip() để thực hiện việc này như sau first_names = [‘Jane’, ‘John’, ‘Jennifer’]
Hai hàm thú vị cần biết trong PythonTìm hiểu cách tạo bảng có lập bảng và hiển thị thanh tiến trình với tqdm trong Pythonhướng tới khoa học dữ liệu. com Nếu chúng ta có ba đối tượng có thể lặp lại thì sao?Giả sử chúng ta có một danh sách khác, age, chứa tuổi của cá nhân tương ứng trong hai danh sách khác, first_names và last_names. Chúng tôi cũng muốn bao gồm các độ tuổi trong tuple với tên và họ. Chà, như đã đề cập ở trên, hàm zip() nhận bất kỳ số lần lặp nào first_names = ['Jane', 'John', 'Jennifer']
Truyền một đối số vào zip()Nếu chúng ta chỉ chuyển một đối tượng có thể lặp lại vào hàm zip(), thì chúng ta sẽ nhận được danh sách các bộ dữ liệu 1 mục như sau first_names = ['Jane', 'John', 'Jennifer']print(list(zip(first_names))) Iterables với độ dài không bằng nhauĐiều gì sẽ xảy ra nếu chúng ta chuyển vào danh sách (hoặc các đối tượng có thể lặp lại khác) có độ dài không bằng nhau? . Chà, như đã đề cập ở trên, trình lặp được trả về bởi hàm zip() sẽ dừng sau khi hết lần lặp đầu vào ngắn nhất. Nói cách khác, danh sách các bộ dữ liệu của chúng ta sẽ chỉ chứa các phần tử từ các chỉ mục có trong tất cả các lần lặp được truyền vào hàm zip(). Do đó, các phần tử còn lại trong các lần lặp dài hơn sẽ bị bỏ qua first_names = [‘Jane’, ‘John’, ‘Jennifer’]
Lặp lại song song của IterablesChúng ta có thể sử dụng hàm zip() để lặp song song qua nhiều lần lặp. Vì hàm zip() trả về một trình lặp, nên chúng ta có thể sử dụng đối tượng zip này (trình lặp mà nó trả về) trong một vòng lặp for. Và vì với mỗi lần lặp của trình vòng lặp này, một bộ được trả về, chúng ta có thể giải nén các phần tử của bộ này trong vòng lặp for first_names = ['Jane', 'John', 'Jennifer'] Hoặc chúng ta có thể có ba lần lặp first_names = [‘Jane’, ‘John’, ‘Jennifer’] Một ví dụ khác về phép lặp song song Chúng tôi có hai danh sách. danh sách doanh thu và danh sách chi phí. Chúng tôi muốn lập một danh sách mới, lợi nhuận, đó là phần chênh lệch giữa doanh thu và chi phí. Chúng ta có thể thực hiện điều này bằng cách sử dụng phép lặp song song revenue = [30000, 50000, 70000, 90000] Cách dễ dàng tạo bảng trong PythonCách sử dụng chức năng lập bảng để tạo các bảng có định dạng độc đáo trong Pythonhướng tới khoa học dữ liệu. com giải nén trong pythonGiả sử rằng chúng ta có danh sách các bộ dữ liệu sau ________số 8Và chúng tôi muốn tách các phần tử trong các bộ dữ liệu này thành hai danh sách riêng biệt. Chà, vì điều đó ngược lại với nén (ghép mọi thứ lại với nhau), nên nó sẽ là giải nén (tách rời mọi thứ ra). Để giải nén trong python, chúng ta có thể sử dụng toán tử giải nén * với hàm zip() như sau first_names, last_names = zip(*first_and_last_names)first_names = list(first_names)
Để biết thêm về các toán tử giải nén (* và **), iterables, iterators và iteration, hãy xem hai blog sau Giải nén toán tử trong PythonSử dụng toán tử giải nén * và ** trong pythonhướng tới khoa học dữ liệu. com Iterables và Iterators trong PythonIterables, iterators và iteration trong Pythonhướng tới khoa học dữ liệu. com Nếu bạn thích đọc những câu chuyện như thế này và muốn hỗ trợ tôi với tư cách là một nhà văn, hãy cân nhắc đăng ký để trở thành thành viên Medium. Đó là 5 đô la một tháng, cho phép bạn truy cập không giới hạn vào các câu chuyện trên Phương tiện. Nếu bạn đăng ký bằng liên kết của tôi, tôi sẽ kiếm được một khoản hoa hồng nhỏ Tham gia Medium với liên kết giới thiệu của tôi — Luay MatalkaĐọc mọi câu chuyện từ Luay Matalka (và hàng nghìn nhà văn khác trên Medium). Phí thành viên của bạn hỗ trợ trực tiếp…lmatalka90. vừa phải. com Sự kết luậnTrong hướng dẫn này, chúng ta đã xem xét cách chức năng zip() hoạt động trong python. Chúng tôi đã tìm hiểu cách hàm zip() hoạt động trong các tình huống khác nhau, chẳng hạn như với một lần lặp hoặc với các lần lặp có độ dài không bằng nhau. Sau đó, chúng tôi đã xem cách chúng tôi có thể sử dụng hàm zip() để lặp song song trên nhiều đối tượng có thể lặp lại. Và cuối cùng, chúng ta đã học cách sử dụng toán tử giải nén * để giải nén các đối tượng trong python Ngược lại với zip trong Python là gì?unzip() ngược lại với zip(), có nghĩa là chuyển đổi các giá trị đã nén trở lại dạng ban đầu và điều này được thực hiện với sự trợ giúp của toán tử '*'.
Tôi có thể sử dụng cái gì thay vì zip trong Python?Đó là itertools. izip() . Tạo một trình lặp tổng hợp các phần tử từ mỗi lần lặp. Giống như zip() ngoại trừ việc nó trả về một trình vòng lặp thay vì một danh sách.
Có chức năng giải nén Python không?Giải nén bằng Python
. Điều này được thực hiện với sự trợ giúp của toán tử “*”. Vì vậy, bây giờ, nếu chúng ta muốn đưa các giá trị cũ vào danh sách và danh sách từ danh sách đã nén zl, thì chúng ta phải giải nén zl. Unzipping means converting the zipped values back to the individual self as they were. This is done with the help of “*” operator. So now, if we want to put the old values into listA and listB from zipped list zl, then we have to unzip zl.
Làm cách nào để giải nén bằng Python?Nhập mô-đun tệp zip Tạo đối tượng tệp zip bằng lớp ZipFile. Gọi phương thức giải nén () trên đối tượng tệp zip và chuyển tên của tệp sẽ được giải nén và đường dẫn nơi tệp cần được giải nén và Giải nén tệp cụ thể có trong tệp zip. |