Hướng dẫn combination of two list in python - sự kết hợp của hai danh sách trong python

Tôi gặp khó khăn khi quấn đầu quanh một thuật toán mà tôi cố gắng thực hiện. Tôi có hai danh sách và muốn lấy các kết hợp cụ thể từ hai danh sách.

Đây là một ví dụ.

names = ['a', 'b']
numbers = [1, 2]

Đầu ra trong trường hợp này sẽ là:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]

Tôi có thể có nhiều tên hơn số, tức là

names = ['a', 'b', 'c']
numbers = [1, 2]
1. Đây là một ví dụ với 3 tên và 2 số:

names = ['a', 'b', 'c']
numbers = [1, 2]

output:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
[('a', 1), ('c', 2)]
[('c', 1), ('a', 2)]
[('b', 1), ('c', 2)]
[('c', 1), ('b', 2)]

Hướng dẫn combination of two list in python - sự kết hợp của hai danh sách trong python

hỏi ngày 17 tháng 10 năm 2012 lúc 13:16Oct 17, 2012 at 13:16

10

Cách đơn giản nhất là sử dụng

names = ['a', 'b', 'c']
numbers = [1, 2]
2:

a = ["foo", "melon"]
b = [True, False]
c = list(itertools.product(a, b))
>> [("foo", True), ("foo", False), ("melon", True), ("melon", False)]

Hướng dẫn combination of two list in python - sự kết hợp của hai danh sách trong python

ITSJeyd

4.9152 Huy hiệu vàng28 Huy hiệu bạc49 Huy hiệu đồng2 gold badges28 silver badges49 bronze badges

Đã trả lời ngày 1 tháng 12 năm 2015 lúc 23:57Dec 1, 2015 at 23:57

DridkdridkDrIDK

7.2412 Huy hiệu vàng14 Huy hiệu bạc12 Huy hiệu đồng2 gold badges14 silver badges12 bronze badges

4

Có thể đơn giản hơn cái đơn giản nhất ở trên:

>>> a = ["foo", "bar"]
>>> b = [1, 2, 3]
>>> [(x,y) for x in a for y in b]  # for a list
[('foo', 1), ('foo', 2), ('foo', 3), ('bar', 1), ('bar', 2), ('bar', 3)]
>>> ((x,y) for x in a for y in b)  # for a generator if you worry about memory or time complexity.
 at 0x1048de850>

mà không có bất kỳ nhập khẩu

Đã trả lời ngày 21 tháng 8 năm 2016 lúc 13:33Aug 21, 2016 at 13:33

logiclogiclogic

2.3991 Huy hiệu vàng11 Huy hiệu bạc 51 gold badge11 silver badges5 bronze badges

5

Lưu ý: Câu trả lời này là cho câu hỏi cụ thể được hỏi ở trên. Nếu bạn ở đây từ Google và chỉ tìm cách để có được một sản phẩm Cartesian ở Python,

names = ['a', 'b', 'c']
numbers = [1, 2]
2 hoặc một danh sách hiểu đơn giản có thể là những gì bạn đang tìm kiếm - xem các câu trả lời khác.: This answer is for the specific question asked above. If you are here from Google and just looking for a way to get a Cartesian product in Python,
names = ['a', 'b', 'c']
numbers = [1, 2]
2 or a simple list comprehension may be what you are looking for - see the other answers.


Giả sử

names = ['a', 'b', 'c']
numbers = [1, 2]
4. Sau đó, những gì bạn dường như muốn là lấy tất cả các hoán vị có độ dài
names = ['a', 'b', 'c']
numbers = [1, 2]
5 từ
names = ['a', 'b', 'c']
numbers = [1, 2]
6 và kết hợp chúng với các mục từ List2. Trong Python:

import itertools
list1=['a','b','c']
list2=[1,2]

[list(zip(x,list2)) for x in itertools.permutations(list1,len(list2))]

Trả lại

[[('a', 1), ('b', 2)], [('a', 1), ('c', 2)], [('b', 1), ('a', 2)], [('b', 1), ('c', 2)], [('c', 1), ('a', 2)], [('c', 1), ('b', 2)]]

Hóa đơn

8.9487 Huy hiệu vàng54 Huy hiệu bạc77 Huy hiệu đồng7 gold badges54 silver badges77 bronze badges

Đã trả lời ngày 17 tháng 10 năm 2012 lúc 13:35Oct 17, 2012 at 13:35

Interjayinterjayinterjay

103K21 Huy hiệu vàng255 Huy hiệu bạc249 Huy hiệu Đồng21 gold badges255 silver badges249 bronze badges

7

Tôi đã tìm kiếm một danh sách nhân với chính nó chỉ với các kết hợp duy nhất, được cung cấp dưới dạng chức năng này.

import itertools
itertools.combinations(list, n_times)

Ở đây như một đoạn trích từ các tài liệu Python trên

names = ['a', 'b', 'c']
numbers = [1, 2]
7 có thể giúp bạn tìm thấy những gì bạn đang tìm kiếm.

Combinatoric generators:

Iterator                                 | Results
-----------------------------------------+----------------------------------------
product(p, q, ... [repeat=1])            | cartesian product, equivalent to a 
                                         |   nested for-loop
-----------------------------------------+----------------------------------------
permutations(p[, r])                     | r-length tuples, all possible 
                                         |   orderings, no repeated elements
-----------------------------------------+----------------------------------------
combinations(p, r)                       | r-length tuples, in sorted order, no 
                                         |   repeated elements
-----------------------------------------+----------------------------------------
combinations_with_replacement(p, r)      | r-length tuples, in sorted order, 
                                         | with repeated elements
-----------------------------------------+----------------------------------------
product('ABCD', repeat=2)                | AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
permutations('ABCD', 2)                  | AB AC AD BA BC BD CA CB CD DA DB DC
combinations('ABCD', 2)                  | AB AC AD BC BD CD
combinations_with_replacement('ABCD', 2) | AA AB AC AD BB BC BD CC CD DD

Đã trả lời ngày 29 tháng 11 năm 2016 lúc 21:52Nov 29, 2016 at 21:52

ThorsummonerthorsummonerThorSummoner

15.2K13 Huy hiệu vàng129 Huy hiệu bạc138 Huy hiệu đồng13 gold badges129 silver badges138 bronze badges

Cách tốt nhất để tìm hiểu tất cả các kết hợp cho số lượng lớn danh sách là:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
0

Kết quả sẽ là:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
1

Đã trả lời ngày 24 tháng 7 năm 2019 lúc 9:07Jul 24, 2019 at 9:07

Hướng dẫn combination of two list in python - sự kết hợp của hai danh sách trong python

Ishan Rastogiishan RastogiIshan Rastogi

7902 Huy hiệu vàng7 Huy hiệu bạc17 Huy hiệu đồng2 gold badges7 silver badges17 bronze badges

1

Hoặc câu trả lời của KISS cho các danh sách ngắn:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
2

Không hiệu suất như itertools nhưng bạn đang sử dụng python nên hiệu suất đã không phải là mối quan tâm hàng đầu của bạn ...

Tôi cũng thích tất cả các câu trả lời khác!

Đã trả lời ngày 29 tháng 7 năm 2019 lúc 17:50Jul 29, 2019 at 17:50

Bạn có thể muốn thử một danh sách một dòng hiểu:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
3

Đã trả lời ngày 10 tháng 1 năm 2017 lúc 19:26Jan 10, 2017 at 19:26

Hướng dẫn combination of two list in python - sự kết hợp của hai danh sách trong python

IdanmelidanmelIdanmel

4725 Huy hiệu bạc12 Huy hiệu Đồng5 silver badges12 bronze badges

Một cải tiến nhỏ cho câu trả lời từ Interjay, để làm cho kết quả như một danh sách phẳng.

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
4

Tham khảo từ liên kết này

Đã trả lời ngày 19 tháng 12 năm 2013 lúc 15:02Dec 19, 2013 at 15:02

Zhoumass ZhouMass Zhou

3493 Huy hiệu bạc6 Huy hiệu Đồng3 silver badges6 bronze badges

Không có

names = ['a', 'b', 'c']
numbers = [1, 2]
7 như một danh sách phẳng:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
5

hoặc trong Python 2:Python 2:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
6

Đã trả lời ngày 11 tháng 3 năm 2016 lúc 11:32Mar 11, 2016 at 11:32

user3684792user3684792user3684792

2.4642 Huy hiệu vàng17 Huy hiệu bạc22 Huy hiệu đồng2 gold badges17 silver badges22 bronze badges

Trả lời câu hỏi "Đưa ra hai danh sách, tìm tất cả các hoán vị có thể của các cặp một mục từ mỗi danh sách" và sử dụng chức năng Python cơ bản (nghĩa là không có itertools) và do đó, giúp dễ dàng sao chép cho các ngôn ngữ lập trình khác:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
7

Trả lại

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
8

Hóa đơnMar 11, 2018 at 10:11

8.9487 Huy hiệu vàng54 Huy hiệu bạc77 Huy hiệu đồngcomputerist

Đã trả lời ngày 17 tháng 10 năm 2012 lúc 13:358 silver badges9 bronze badges

Interjayinterjay

103K21 Huy hiệu vàng255 Huy hiệu bạc249 Huy hiệu Đồng

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
9

Tôi đã tìm kiếm một danh sách nhân với chính nó chỉ với các kết hợp duy nhất, được cung cấp dưới dạng chức năng này.

names = ['a', 'b', 'c']
numbers = [1, 2]
0

Ở đây như một đoạn trích từ các tài liệu Python trên

names = ['a', 'b', 'c']
numbers = [1, 2]
7 có thể giúp bạn tìm thấy những gì bạn đang tìm kiếm.Aug 5, 2019 at 16:12

Hướng dẫn combination of two list in python - sự kết hợp của hai danh sách trong python

Đã trả lời ngày 29 tháng 11 năm 2016 lúc 21:52Steve Alexander

Thorsummonerthorsummoner1 gold badge8 silver badges6 bronze badges

Làm thế nào để bạn tìm thấy sự kết hợp của hai danh sách trong Python?

Làm thế nào để có được tất cả các kết hợp độc đáo của hai danh sách trong Python..
list1 = ["a", "b", "c"].
list2 = [1, 2].
all_combinations = [].
list1_permutations = itertools. hoán vị (list1, len (list2)) ....
Đối với mỗi_Permuting trong list1_permutations:.
Zipped = zip (mỗi_Permuting, list2).
all_combinations. ....
print(all_combinations).

Làm thế nào để bạn tạo ra tất cả các kết hợp có thể của hai danh sách?

Nhập công thức = list1.Expand Out Cột List1 mới và sau đó đóng và tải truy vấn vào bảng.Bảng sẽ có tất cả các kết hợp các mục từ cả hai danh sách và chúng tôi đã lưu trong việc tạo một cột tùy chỉnh trong List1 và tránh sử dụng một truy vấn hợp nhất hoàn toàn! Expand out the new List1 column and then Close & Load the query to a table. The table will have all the combinations of items from both lists and we saved on making a custom column in List1 and avoided using a merge query altogether!

Làm thế nào để bạn tìm thấy sự kết hợp của một danh sách?

Để tìm tất cả các kết hợp của một danh sách Python, còn được gọi là một quyền lực, hãy làm theo các bước sau:..
Nhập mô-đun ITERtools tích hợp ..
Chỉ định danh sách các mục ..
Khởi tạo một danh sách trống để lưu trữ các kết hợp ..
Tạo một vòng lặp các giá trị vòng từ 0 đến chiều dài của danh sách + 1 ..

Làm thế nào để bạn tạo ra tất cả các kết hợp có thể của một danh sách?

Để liệt kê tất cả các kết hợp có thể trong một tờ Excel, hãy làm theo quy trình sau ;..
Bước 1: Mở tờ.Trước tiên, bạn cần mở trang tính với dữ liệu mà bạn muốn thực hiện tất cả các kết hợp có thể.....
Bước 2: Chọn ô cho kết quả.....
Bước 3: Kéo công thức sang các ô khác ..