Trong python, để nối danh sách l1 với danh sách l2, đoạn mã nào được sử dụng?

Bạn đã bao giờ cần lặp qua nhiều đoạn lặp song song khi viết mã bằng Python chưa? Trong hướng dẫn này, chúng tôi sẽ sử dụng hàm zip () của Python để thực hiện hiệu quả việc lặp song song trên nhiều lần lặp. Đây là những gì chúng ta sẽ đề cập trong bài đăng này: * Cách sử dụng Toán tử ‘in’ trong Python để Traverse

Bạn đang xem: zip trong python là gì

Bạn đã bao giờ cần lặp qua nhiều vòng lặp song song khi viết mã bằng Python chưa?

Trong hướng dẫn này, chúng tôi sẽ sử dụng hàm zip () của Python để thực hiện hiệu quả việc lặp song song trên nhiều iterables.

Đây là những gì chúng tôi sẽ đề cập trong bài đăng này:

Cách Sử dụng Toán tử ‘in’ trong Python để Traverse Lặp lại

Trước khi chúng ta hãy tiếp tục và tìm hiểu về hàm zip () , hãy nhanh chóng xem lại cách chúng tôi sử dụng toán tử in với vòng lặp for để truy cập các mục trong một có thể lặp lại (danh sách, bộ giá trị, từ điển, chuỗi, v.v.). Đoạn mã bên dưới hiển thị cú pháp chung:

cho mục trong danh sách_1: # làm gì đó trên mục

Nói một cách đơn giản, chúng tôi nói với trình thông dịch Python: “Xin chào! Vui lòng lặp qua list_1 để truy cập từng mục và thực hiện một số thao tác trên mỗi mục . "

Điều gì sẽ xảy ra nếu chúng ta có nhiều hơn một danh sách (hoặc bất kỳ danh sách nào có thể lặp lại)? Giả sử, danh sách N - bạn có thể chèn số yêu thích của mình vào vị trí của N . Mọi thứ hiện có vẻ hơi khó khăn và cách tiếp cận sau sẽ không hoạt động:

# Ví dụ - 2 danh sách, danh sách_1 và danh sách_2 cho i1 trong danh sách_1: cho i2 trong danh sách_2: # làm gì đó trên i1 và i2

Xin lưu ý rằng đoạn mã trên:

  • lần đầu tiên chạm vào mục đầu tiên trong list_1 ,
  • sau đó lặp qua list_2 để truy cập từng mục trong list_2 ,
  • sau đó truy cập vào mục thứ hai trong list_1 < / code>,
  • và lặp lại toàn bộ list_2 và
  • thực hiện điều này cho đến khi nó đi qua toàn bộ list_1

Rõ ràng, đây không phải là điều chúng tôi muốn. Chúng tôi cần có thể truy cập các mục tại một chỉ mục cụ thể từ cả hai danh sách. Đây chính xác là những gì được gọi là lặp lại song song.

Tại sao lại sử dụng đối tượng range () của Python Luôn luôn không phải là Lựa chọn Tối ưu

Bạn có thể nghĩ đến việc sử dụng đối tượng range () với vòng lặp for . "Nếu tôi biết rằng tất cả các danh sách đều có cùng số lượng mục, tôi có thể không chỉ sử dụng index để khai thác vào từng danh sách đó và kéo ra mục tại index ? "

Chà, hãy thử xem. Đoạn mã nằm trong đoạn mã dưới đây. Bạn biết rằng tất cả các danh sách - list_1 , list_2 , ..., list_N - chứa cùng một số mục. Và bạn tạo một đối tượng range () như hình bên dưới và sử dụng chỉ mục i để truy cập mục ở vị trí i trong mỗi mục trong số các mục.

cho tôi trong phạm vi (len (list_1)): # làm điều gì đó trên list_1 [i], list_2 [i], list_3 [i], ..., list_N [i]

Như bạn có thể đoán bây giờ, điều này hoạt động như mong đợi chỉ khi tất cả các vòng lặp chứa cùng một số lượng mục.

Hãy xem xét trường hợp một hoặc nhiều danh sách được cập nhật - giả sử, một danh sách có thể có một mục bị xóa khỏi danh sách và một danh sách khác có thể có một mục được thêm vào. Điều này sẽ gây nhầm lẫn:

  • Bạn có thể gặp phải IndexErrors khi bạn đang truy cập các mục tại các chỉ mục không còn hợp lệ vì mục trong chỉ mục đã bị xóa, hoặc
  • Bạn có thể hoàn toàn không truy cập vào các mục mới được thêm vì chúng đang ở các chỉ mục hiện không nằm trong phạm vi chỉ số được truy cập.

Bây giờ, hãy xem cách Python sử dụng zip () có thể giúp chúng ta lặp qua nhiều danh sách song song. Đọc trước để tìm hiểu.

Hàm zip () của Python hoạt động như thế nào

Hãy bắt đầu bằng cách tìm kiếm tài liệu cho zip () và phân tích cú pháp nó trong các phần tiếp theo.

Cú pháp : zip (* iterables) - zip () nhận một hoặc nhiều đoạn lặp làm đối số.

Tạo một trình lặp để tổng hợp các phần tử từ mỗi đoạn lặp. 1. Trả về một trình lặp các bộ giá trị, trong đó bộ giá trị thứ i chứa phần tử thứ i từ mỗi chuỗi đối số hoặc chuỗi lặp. 2. Trình lặp dừng khi đầu vào ngắn nhất có thể lặp lại đã hết. 3. Với một đối số có thể lặp lại duy nhất, nó trả về một trình lặp gồm 1 bộ giá trị.

4. Không có đối số, nó trả về một trình lặp trống. - Python Docs

Cách hàm zip () tạo một Iterator of Tuples

minh họa sau đây giúp chúng tôi hiểu cách hoạt động của hàm zip () bằng cách tạo một trình lặp các bộ giá trị từ hai danh sách đầu vào, L1 và L2 . Kết quả của việc gọi zip () trên các tệp lặp được hiển thị ở bên phải.

Trong python, để nối danh sách l1 với danh sách l2, đoạn mã nào được sử dụng?

  • Lưu ý cách tuple đầu tiên (tại chỉ mục 0 ) ở bên phải chứa 2 mục, tại chỉ mục 0 trong L1 và L2 , tương ứng.
  • Mục thứ hai tuple (tại chỉ mục 1 ) chứa các mục tại chỉ mục 1 trong L1 và L2 .
  • < li> Nói chung, bộ tại chỉ mục i chứa các mục tại chỉ mục i trong L1 và L2 .

Hãy thử một vài ví dụ trong phần tiếp theo.

Cách sử dụng hàm zip () của Python - Hãy tự mình thử!

Hãy thử chạy các ví dụ sau trong IDE yêu thích của bạn.

Ví dụ đầu tiên, chúng ta hãy chọn hai danh sách L1 và L2 chứa 5 nó mỗi ems. Hãy gọi hàm zip () và chuyển vào ngôn ngữ L1 và L2 .

L1 = [1,2,3,4,5] L2 = ['a', 'b', 'c', 'd', 'e'] zip_L1L2 = zip (L1, L2) in (zip_L1L2) # Đầu ra Mẫu & lt; zip đối tượng tại 0x7f92f44d5550 & gt;

Hãy truyền đối tượng zip vào danh sách và in nó ra, như được hiển thị bên dưới.

print (list (zip_L1L2 )) # Đầu ra [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]

< h3 id = "what-going-when-the-iterables-are-of-other-lengths"> Điều gì sẽ xảy ra khi các Đoạn lặp có độ dài Khác nhau?

Nếu bạn quay lại tài liệu, điều thứ hai mục trong danh sách được đánh số có nội dung: "Trình vòng lặp dừng khi đầu vào ngắn nhất có thể lặp lại hết."

Không giống như làm việc với đối tượng range () , việc sử dụng zip () không gây ra lỗi khi tất cả các mục có thể có độ dài khác nhau. Hãy xác minh điều này như được hiển thị bên dưới.

Hãy xóa 'e' khỏi L2 và lặp lại các bước ở trên.

< code class = "language-Python"> L1 = [1,2,3,4,5] L2 = ['a', 'b', 'c', 'd'] zip_L1L2 = zip (L1, L2) in (danh sách (zip_L1L2)) # Đầu ra [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]

Bây giờ chúng ta thấy rằng đầu ra danh sách chỉ chứa 4 bộ giá trị và mục 5 từ L1 chưa được sử dụng. Càng xa càng tốt!

Điều gì sẽ xảy ra khi bạn chuyển một lần hoặc không lặp lại Hàm zip ()?

Hãy truy cập lại mục 3 và 4 của tài liệu.

"Với một đối số có thể lặp lại, nó trả về một trình lặp gồm 1-tuples.
Không có đối số, nó trả về một trình lặp trống. "

Hãy tiếp tục và xác minh điều này. Hãy quan sát cách chúng tôi nhận được 1 bộ giá trị khi chỉ nhập L1 trong đoạn mã bên dưới:

L1 = [1,2, 3,4,5] zip_L1 = zip (L1) in (danh sách (zip_L1)) # Đầu ra [(1,), (2,), (3,), (4,), (5,)]

Khi chúng tôi gọi hàm zip () mà không có đối số, chúng tôi nhận được một danh sách trống, như được hiển thị bên dưới:

zip_None = zip () print (list (zip_None)) # Đầu ra []

Bây giờ hãy tạo một ví dụ trực quan hơn. Đoạn mã bên dưới cho thấy cách chúng tôi có thể sử dụng zip () để nén 3 danh sách lại với nhau và thực hiện các thao tác có ý nghĩa.

Với danh sách các loại trái cây, giá cả và số lượng bạn đã mua, tổng số tiền chi tiêu cho mỗi mặt hàng sẽ được in ra.

trái cây = ["táo", "cam", "chuối", "dưa"] giá = [20,10,5,15] số lượng = [5,7,3,4] cho trái cây, giá cả, số lượng trong zip (trái cây, giá cả, số lượng): print (f "Bạn đã mua {số lượng} {trái cây} với giá $ {price * số lượng}") # Đầu ra Bạn đã mua 5 quả táo với giá 100 đô la Bạn đã mua 7 quả cam với giá 70 đô la Bạn đã mua 3 quả chuối với giá 15 đô la Bạn đã mua 4 quả dưa với giá 60 đô la

Bây giờ chúng ta đã hiểu cách hoạt động của hàm zip () và chúng ta biết hạn chế của nó là trình lặp sẽ dừng khi hết vòng lặp ngắn nhất. Vì vậy, hãy xem cách chúng ta có thể khắc phục hạn chế này bằng cách sử dụng hàm zip_longest () trong Python.

Cách sử dụng hàm zip_longest () trong Python

Hãy nhập hàm zip_longest () từ mô-đun itertools :

từ itertools nhập zip_longest

Bây giờ, hãy thử một ví dụ trước đó về L2 chứa một mục nhỏ hơn L1 . < / p>

L1 = [1,2,3,4,5] L2 = ['a', 'b', 'c', 'd'] zipL_L1L2 = zip_longest (L1, L2) in (danh sách (zipL_L1L2)) # Đầu ra [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, None)]

Lưu ý rằng mục 5 từ L1 vẫn được bao gồm. Nhưng vì không có mục nào phù hợp trong L2 , nên phần tử thứ hai trong bộ cuối cùng là None .

Bạn có thể tùy chỉnh nó nhiều hơn nếu bạn muốn. Ví dụ: bạn có thể thay thế Không có bằng một thuật ngữ chỉ rõ hơn như Empty , Item Not Found , v.v. Tất cả những gì bạn phải làm là đặt đối số fillvalue tùy chọn thành thuật ngữ mà bạn muốn hiển thị khi không có mục phù hợp nào trong một tệp có thể lặp lại khi bạn gọi zip_longest () .

Tôi hy vọng bây giờ bạn đã hiểu các hàm zip () và zip_longest () của Python.

Cảm ơn bạn đã đọc! Hẹn gặp lại tất cả các bạn trong một bài viết khác.

Xem thêm những thông tin liên quan đến chủ đề zip trong python là gì

Trong python, để nối danh sách l1 với danh sách l2, đoạn mã nào được sử dụng?

  • Tác giả: Bro Code
  • Ngày đăng: 2021-01-25
  • Đánh giá: 4 ⭐ ( 3089 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: python zip function tutorial example explained

    python zip function

    zip(*iterables) = aggregate elements from two or more iterables (list, tuples, sets, etc.)
    creates a zip object with paired elements stored in tuples for each element

    usernames = ["Dude", "Bro", "Mister"]passwords = ("p@ssword", "abc123", "guest")

    login_dates = ["1/1/2021","1/2/2021","1/3/2021"]

    --------------------------------------
    users = list(zip(usernames,passwords))

    for i in users:
    print(i)

    --------------------------------------
    users = dict(zip(usernames,passwords))

    for key,value in users.items():
    print(key+" : "+value)

    --------------------------------------
    users = zip(usernames,passwords,login_dates)

    for i in users:
    print(i)

    --------------------------------------

    Bro Code merch store 👟 :===========================================================https://teespring.com/stores/bro-code-5

    ===========================================================

  • Tác giả: vinasupport.com
  • Đánh giá: 4 ⭐ ( 5603 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Nối tiếp tutorial về lập trình Python, hôm nay chúng ta sẽ học cách tạo ra file zip bằng cách sử dụng Python, thông qua thư viện zipfile.
  • Tác giả: vi.ichlese.at
  • Đánh giá: 4 ⭐ ( 8443 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bài viết này sẽ cung cấp cho bạn kiến ​​thức chi tiết và toàn diện về Hàm Zip trong Python, cách nó được sử dụng và cách giải nén.
  • Tác giả: lafactoriaweb.com
  • Đánh giá: 4 ⭐ ( 2975 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Mã Zip là gì? Hay mã bưu chính, nghe quen hơn là Zip code là gì? Nếu bạn đã từng giao dịch giao nhận hàng bằng dịch vụ bưu điện hay mua hàng trực tuyến qua
  • Tác giả: topdev.vn
  • Đánh giá: 4 ⭐ ( 4578 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Mục đích của bài này là giúp bạn làm quen dần các khái niệm và thuật ngữ được sử dụng trong Python từ đó bạn có thể rút ra điểm giống và khác nhau với một số ngôn ngữ lập trình khác.
  • Tác giả: viettuts.vn
  • Đánh giá: 4 ⭐ ( 9887 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Module sys trong Python cung cấp các hàm và các biến được sử dụng để thao tác các phần khác nhau của môi trường chạy Python. Nó cho phép chúng ta truy cập
  • Tác giả: www.familug.org
  • Đánh giá: 3 ⭐ ( 5933 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình