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:
...
0Result:
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:
...
3result = 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