Làm thế nào để bạn thực hiện kết hợp hai danh sách trong python?
Có một số cách để tham gia hoặc nối hai hoặc nhiều danh sách trong Python Show Một trong những cách dễ nhất là sử dụng toán tử 7Thí dụTham gia hai danh sách list1 = ["a", "b" , "c"] list3 = list1 + list2 Một cách khác để nối hai danh sách là nối thêm tất cả các mục từ danh sách 2 vào danh sách 1, từng mục một Thí dụNối list2 vào list1 list1 = ["a", "b" , "c"] cho x trong list2. in (danh sách1) Tự mình thử »Hoặc bạn có thể sử dụng phương thức 8, mục đích là thêm các phần tử từ danh sách này sang danh sách khácThí dụSử dụng phương thức 8 để thêm list2 vào cuối list1list1 = ["a", "b" , "c"] danh sách1. gia hạn(list2) Mã nguồnimport itertools from itertools import permutations l1 = ['A','B','C'] l2 = [1,2,3] unique = [] permut = itertools.permutations(l1, len(l2)) for comb in permut: zipped = zip(comb, l2) unique.append(list(zipped)) print(unique) đầu ra[[('A', 1), ('B', 2), ('C', 3)], [('A', 1), ('C', 2), ('B', 3)], [('B', 1), ('A', 2), ('C', 3)], [('B', 1), ('C', 2), ('A', 3)], [('C', 1), ('A', 2), ('B', 3)], [('C', 1), ('B', 2), ('A', 3)]] Để tải file raw Bấm vào đây Xin chào, tôi đã hoàn thành 70% khóa học Python trên Code Academy và bắt đầu nhờ bạn bè gửi cho tôi các dự án để thực hiện và một trong số họ đã yêu cầu tôi làm như sau. Tôi tự hỏi liệu có ai có thể giúp tôi tìm ra cách kết hợp hai danh sách lại với nhau để lặp qua tất cả các kết hợp có thể có của hai danh sách không, tôi. e. , một ví dụ về vũ lực. Tôi thiết lập các danh sách thành cả hai chuỗi để giảm nhầm lẫn khi phải phân biệt giữa int và str. Tôi cũng đang cố gắng tìm ra cách di chuyển tăng dần qua danh sách bằng cách sử dụng các chỉ số. (không hoàn toàn chắc chắn cách nào là tốt nhất/hiệu quả nhất) tên = [“jed”, “zed”, “ged”, “fed”] mã = [“11”, “22”, “33”, “44”]
Đây là những gì tôi có và rõ ràng là tôi bị mất, tôi đã viết một đống thứ mà nó in ra cả hai danh sách chứ không phải từng mục trong danh sách được ghép nối * 4. Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn bạn Tạo tất cả các kết hợp lấy một phần tử từ mỗi danh sách trong Python có thể được thực hiện dễ dàng bằng itertools. chức năng sản phẩm. Nó là một phần của mô-đun itertools và rất hữu ích trong trường hợp này Giải pháp ngắn gọn như sau
Đọc để hiểu làm thế nào điều này là làm việc tốt hơn Mô-đun itertools đã được phát triển và đang được bảo trì bởi Raymond D. Hettinger. Trong bài viết này, chúng tôi sẽ tập trung vào việc sử dụng chức năng sản phẩm của itertools để giải quyết vấn đề của chúng tôi là chủ yếu Vấn đề của chúng ta là. "Tạo tất cả các kết hợp lấy một phần tử từ mỗi danh sách". Trong Toán học, đây được gọi là tích Descartes của các danh sách Tích cartesian của hai danh sách A và B được định nghĩa như sau
Trong Python, itertools. product tạo ra tích cartesian và ưu điểm lớn là nó có thể lấy bất kỳ số lượng danh sách nào làm đầu vào Sử dụng itertools. sản phẩmĐể sử dụng itertools. sản phẩm, chúng tôi cần nhập mô-đun itertools trong mã Python, được thực hiện như sau
Như itertools. sản phẩm sẽ lấy danh sách làm đầu vào, chúng tôi cần tạo một số danh sách. Trong Python, có nhiều cách để tạo danh sách và có thể linh hoạt tạo danh sách dài theo mẫu hoặc với các phần tử ngẫu nhiên Một số cách phổ biến để tạo danh sách trong Python như sau
Có nhiều cách tiếp cận để tạo danh sách và bạn nên khám phá nó theo nhu cầu của mình. Đối với ví dụ hiện tại của chúng tôi, chúng tôi sẽ tạo hai danh sách là list1 và list2
Lưu ý rằng list1 và list2 có số phần tử khác nhau Sau đó, chúng tôi sẽ tạo một danh sách cuối cùng trong đó các phần tử sẽ là danh sách mà chúng tôi sẽ lấy các phần tử ________số 8Sau đó, bạn cần chuyển "danh sách" danh sách cuối cùng này cho itertools. sản phẩm sẽ tạo ra tất cả các kết hợp hoặc sản phẩm cartesian
Tại thời điểm này, chúng ta có thể in các kết hợp và xem các kết hợp đã được tạo [[('A', 1), ('B', 2), ('C', 3)], [('A', 1), ('C', 2), ('B', 3)], [('B', 1), ('A', 2), ('C', 3)], [('B', 1), ('C', 2), ('A', 3)], [('C', 1), ('A', 2), ('B', 3)], [('C', 1), ('B', 2), ('A', 3)]]0 đầu ra [[('A', 1), ('B', 2), ('C', 3)], [('A', 1), ('C', 2), ('B', 3)], [('B', 1), ('A', 2), ('C', 3)], [('B', 1), ('C', 2), ('A', 3)], [('C', 1), ('A', 2), ('B', 3)], [('C', 1), ('B', 2), ('A', 3)]]1 Mã hoàn chỉnh như sau [[('A', 1), ('B', 2), ('C', 3)], [('A', 1), ('C', 2), ('B', 3)], [('B', 1), ('A', 2), ('C', 3)], [('B', 1), ('C', 2), ('A', 3)], [('C', 1), ('A', 2), ('B', 3)], [('C', 1), ('B', 2), ('A', 3)]]2Nhận số lượng kết hợp Để có được số lượng kết hợp, chúng ta chỉ cần sử dụng hàm len trên danh sách kết hợp là đầu ra 0Đối với ví dụ trên của chúng tôi, nó sẽ đưa ra 15 kết hợp. Hoàn thành mã 1đầu ra 2Trên thực tế, điều này giống như tích độ dài của các danh sách riêng lẻ, chẳng hạn như 3Đi qua các kết hợpHãy để chúng tôi duyệt qua các kết hợp mà chúng tôi đã tạo để làm bất cứ điều gì hữu ích với các kết hợp đã tạo, chúng tôi cần duyệt qua nó và nhận các kết hợp riêng lẻ Các mục có thể được duyệt qua như sau 4Nó cũng có thể được truy cập theo chỉ mục 5Hoàn thành mã Python 6đầu ra 7Với điều này, bạn có một ý tưởng hay để vượt qua các kết hợp khác nhau Ví dụ với 4 danh sách 8đầu ra 9Nếu một trong danh sách trống thì sao? Mã cho danh sách trống 0đầu ra 1Bạn có thể tự hỏi điều gì sẽ xảy ra nếu chúng ta chỉ chuyển một danh sách vào hàm sản phẩm. Trong trường hợp này, nó sẽ chỉ trả về từng phần tử của danh sách một 2đầu ra 3Với điều này, bạn có kiến thức đầy đủ về cách tạo tất cả các kết hợp bằng cách lấy một phần tử từ mỗi danh sách trong Python. Đây là một quá trình hữu ích. Vui thích |