Hướng dẫn find common elements in list of lists python - tìm các phần tử phổ biến trong danh sách danh sách python

42

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng tìm ra cách so sánh số N số danh sách để tìm các yếu tố phổ biến. Ví dụ:

p=[ [1,2,3],
    [1,9,9],
      ..
      ..
    [1,2,4]

>> print common[p]
>> [1]

Bây giờ nếu tôi biết số lượng các yếu tố tôi có thể thực hiện so sánh như:

for a in b:
  for c in d:
    for x in y:
...

Nhưng điều đó sẽ không hoạt động nếu tôi không biết có bao nhiêu yếu tố P có. Tôi đã xem xét giải pháp này so sánh hai danh sách //stackoverflow.com/a/1388864/1320800

Nhưng sau khi dành 4 giờ cố gắng tìm ra cách để làm cho đệ quy đó, một giải pháp vẫn còn giúp tôi tránh được vì vậy mọi sự giúp đỡ sẽ được đánh giá cao!

Hỏi ngày 8 tháng 4 năm 2012 lúc 21:23Apr 8, 2012 at 21:23

3

Bạn đang tìm kiếm giao điểm tập hợp của tất cả các nhóm phụ và kiểu dữ liệu bạn nên sử dụng cho các hoạt động đã đặt là một tập hợp:

result = set[p[0]]
for s in p[1:]:
    result.intersection_update[s]
print result

Đã trả lời ngày 8 tháng 4 năm 2012 lúc 21:25Apr 8, 2012 at 21:25

Sven Marnachsven MarnachSven Marnach

546K114 Huy hiệu vàng916 Huy hiệu bạc818 Huy hiệu đồng114 gold badges916 silver badges818 bronze badges

6

Phương thức set.intersection [] hỗ trợ giao nhau nhiều đầu vào tại một thời điểm. Sử dụng đối số Giải nén để kéo những người con ra khỏi danh sách bên ngoài và chuyển chúng vào

for a in b:
  for c in d:
    for x in y:
...
4 dưới dạng các đối số riêng biệt:

>>> p=[ [1,2,3],
        [1,9,9],
        [1,2,4]]

>>> set[p[0]].intersection[*p]
set[[1]]

Đã trả lời ngày 8 tháng 4 năm 2012 lúc 22:39Apr 8, 2012 at 22:39

Raymond Hettingerraymond HettingerRaymond Hettinger

208K62 Huy hiệu vàng367 Huy hiệu bạc469 Huy hiệu Đồng62 gold badges367 silver badges469 bronze badges

1

Một giải pháp đơn giản [một dòng] là:

set.intersection[*[set[list] for list in p]]

Đã trả lời ngày 9 tháng 1 năm 2017 lúc 23:35Jan 9, 2017 at 23:35

WindchimeswindchimesWindChimes

2.7553 huy hiệu vàng23 Huy hiệu bạc25 Huy hiệu đồng3 gold badges23 silver badges25 bronze badges

Tại sao không chỉ:

set.intersection[*map[set, p]]

Result:

set[[1]]

Hoặc như thế này:

ip = iter[p]
s = set[next[ip]]
s.intersection[*ip]

Result:

set[[1]]

edit:

được sao chép từ bảng điều khiển:

>>> p = [[1,2,3], [1,9,9], [1,2,4]]
>>> set.intersection[*map[set, p]]
set[[1]]
>>> ip = iter[p]
>>> s = set[next[ip]]
>>> s.intersection[*ip]
set[[1]]

Đã trả lời ngày 8 tháng 4 năm 2012 lúc 22:00Apr 8, 2012 at 22:00

Pillmuncherpillmuncherpillmuncher

9,9642 Huy hiệu vàng34 Huy hiệu bạc33 Huy hiệu đồng2 gold badges34 silver badges33 bronze badges

1

for a in b:
  for c in d:
    for x in y:
...
0

Result:

for a in b:
  for c in d:
    for x in y:
...
1

Đã trả lời ngày 8 tháng 4 năm 2012 lúc 21:39Apr 8, 2012 at 21:39

AkavallakavallAkavall

78.8K48 Huy hiệu vàng199 Huy hiệu bạc244 Huy hiệu Đồng48 gold badges199 silver badges244 bronze badges

6

for a in b:
  for c in d:
    for x in y:
...
2

Đã trả lời ngày 8 tháng 4 năm 2012 lúc 21:30Apr 8, 2012 at 21:30

Joel Cornettjoel CornettJoel Cornett

23,5K9 Huy hiệu vàng60 Huy hiệu bạc85 Huy hiệu Đồng9 gold badges60 silver badges85 bronze badges

2

Bạn đang tìm kiếm giao điểm tập hợp của tất cả các nhóm phụ và kiểu dữ liệu bạn nên sử dụng cho các hoạt động đã đặt là một tập hợp:

for a in b:
  for c in d:
    for x in y:
...
3

result = set[p[0]]
for s in p[1:]:
    result.intersection_update[s]
print result

Đã trả lời ngày 8 tháng 4 năm 2012 lúc 21:25

Sven Marnachsven MarnachAug 30, 2017 at 14:24

Làm thế nào để bạn tìm thấy các yếu tố phổ biến của ba danh sách trong Python?

Cách tiếp cận: Chúng tôi đã đưa ra ba mảng, với sự trợ giúp của các bộ người ta có thể dễ dàng tìm ra giao điểm của các mảng này. Phương pháp giao nhau chỉ đơn giản là cung cấp giao điểm của cả hai mảng mà bạn muốn thực hiện hoạt động của giao lộ [hoặc, nó chỉ đơn giản đưa ra các yếu tố phổ biến trong cả hai mảng].

Làm thế nào để bạn tìm thấy yếu tố chung của hai danh sách?

Bạn có thể nhận các yếu tố phổ biến giữa hai danh sách bằng phương pháp "RETAINall" ...
Sử dụng Hashset để giữ các yếu tố cần phải được loại bỏ ..
Thêm tất cả các yếu tố của List1 vào Hashset ..
Lặp lại List2 và xóa các phần tử khỏi một băm có mặt trong list2 ==> có mặt trong cả List1 và List2 ..

Làm thế nào để bạn tìm thấy các yếu tố phổ biến trong một danh sách Python?

Multimode [] - Trả về các yếu tố phổ biến nhất từ danh sách.Điều này trả về tất cả các yếu tố phổ biến nhất từ danh sách. – return the most common elements from the list. This returns all the most common elements from the list.

Làm thế nào để bạn chọn một yếu tố chung trong danh sách Python?

Làm thế nào để tìm các yếu tố phổ biến giữa hai danh sách trong Python..
list1 = [1, 2].
list2 = [1, 3].
list1_as_set = set [list1].
Giao lộ = list1_as_set.Giao lộ [List2] Tìm các yếu tố phổ biến của tập hợp và danh sách ..
Giao lộ_as_list = Danh sách [Giao lộ].
print[intersection_as_list].

Bài Viết Liên Quan

Chủ Đề