Một cách tiếp cận khác, trông như [trong] hiệu quả - o [n^2] trong đó n = số lượng vật phẩm. Nó không hoàn toàn thanh lịch, nhưng nó đúng. Hàm sau trả về một bộ đông lạnh [có thể băm] nếu bạn cung cấp giá trị True
cho đối số được đặt tên return_sets
, nếu không nó sẽ trả về danh sách các danh sách [mặc định, vì câu hỏi của bạn cho biết đó là những gì bạn thực sự muốn]:
def create_equivalence_classes[relation, return_sets=False]:
eq_class = {}
for x, y in relation:
# Use tuples of x, y in case either is a string of length > 1 [iterable],
# and so that elements x, y can be noniterables such as ints.
eq_class_x = eq_class.get[x, frozenset[ [x,] ]]
eq_class_y = eq_class.get[y, frozenset[ [y,] ]]
join = eq_class_x.union[eq_class_y]
for u in eq_class_x:
eq_class[u] = join
for v in eq_class_y:
eq_class[v] = join
set_of_eq_classes = set[eq_class.values[]]
if return_sets:
return set_of_eq_classes
else:
return list[map[list, set_of_eq_classes]]
Usage:
>>> data = [['a','b'], ['a','c'], ['b','c'], ['c','d'], ['e','f'], ['f','g']]
>>> print[create_equivalence_classes[data]]
[['d', 'c', 'b', 'a'], ['g', 'f', 'e']]
>>> print[create_equivalence_classes[data, return_sets=False]]
{frozenset[{'d', 'c', 'b', 'a'}], frozenset[{'g', 'f', 'e'}]}
>>> data1 = [['aa','bb'], ['bb','cc'], ['bb','dd'], ['fff','ggg'], ['ggg','hhh']]
>>> print[create_equivalence_classes[data1]]
[['bb', 'aa', 'dd', 'cc'], ['hhh', 'fff', 'ggg']]
>>> data2 = [[0,1], [2,3], [0,2], [16, 17], [21, 21], [18, 16]]
>>> print[create_equivalence_classes[data2]]
[[21], [0, 1, 2, 3], [16, 17, 18]]
Xếp hạng chủ đề:
- 0 Bầu chọn - trung bình 0
- 1
- 2
- 3
- 4
- 5
các yếu tố phổ biến của một danh sách |
Bài viết: 4.3234,323 Chủ đề: 1.3861,386 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 14 14 Đưa ra 2 danh sách trở lên, tôi muốn có một danh sách các yếu tố phổ biến. & NBSP; Nếu đơn đặt hàng được sắp xếp lại thì ổn. a=['apple','banana','cherry','lemon','orange'] b=['car','lemon',80,443,'python','banana','yellow'] c=commonlist[a,b] print[c]
Có một cách dễ dàng để làm điều đó? Truyền thống là áp lực ngang hàng từ người chết Bạn gọi ai đó nói ba ngôn ngữ là gì? Ba nhạc. Hai ngôn ngữ? Song ngữ. Một ngôn ngữ? Người Mỹ. Bài viết: 7.8027,802 Chủ đề: 144144 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 567 567 MAR-22-2017, 05:46 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 06:58 AM của Buran.] [This post was last modified: Mar-22-2017, 06:58 AM by buran.] Chuyển đổi danh sách thành bộ và kiểm tra giao lộ a=['apple','banana','cherry','lemon','orange'] b=['car','lemon',80,443,'python','banana','yellow'] c=list[set[a] & set[b]] # of course converting back to list is optional print c
Skaperen nặng giống như một con vịt Bài viết: 4.3234,323 Chủ đề: 1.3861,386 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 14 14 Danh tiếng: 567 Truyền thống là áp lực ngang hàng từ người chết Bạn gọi ai đó nói ba ngôn ngữ là gì? Ba nhạc. Hai ngôn ngữ? Song ngữ. Một ngôn ngữ? Người Mỹ. Bài viết: 7.8026,410 Chủ đề: 144115 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 567 483 MAR-22-2017, 05:46 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 06:58 AM của Buran.] [This post was last modified: Mar-22-2017, 09:07 AM by snippsat.] Chuyển đổi danh sách thành bộ và kiểm tra giao lộ >>> a = ['apple','banana','cherry','lemon','orange'] >>> b = ['car','lemon',80,443,'python','banana','yellow'] >>> [i for i in a if i in b] ['banana', 'lemon'] Skaperen nặng giống như một con vịtchange to difference. >>> [i for i in a if i not in b] ['apple', 'cherry', 'orange'] # sets >>> list[set[a] - set[b]] ['cherry', 'apple', 'orange'] Bài viết: 4.323 Chủ đề: 1.386331 Đặt có thể là một cách tốt hơn để lưu trữ một số "danh sách" nhất định khi đặt hàng không quan trọng.2 Bài viết: 6.410Feb 2017 Chủ đề: 115 65 Danh tiếng: 483 Bài viết: 7.8027,802 Chủ đề: 144144 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 567 567 MAR-22-2017, 05:46 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 06:58 AM của Buran.]zivoni Wrote: List comprehension is more universal, as sets work only with hashable items. Sometimes one could be bitten with a fact that immutability doesnt guarantee hashability [usually with tuples - while [1, [2]] is tuple and therefore immutable, it is not hashable]. Chuyển đổi danh sách thành bộ và kiểm tra giao lộ |
Skaperen nặng giống như một con vịt | |||||
Bài viết: 4.323 | Chủ đề: 1.386 | Đặt có thể là một cách tốt hơn để lưu trữ một số "danh sách" nhất định khi đặt hàng không quan trọng. | Bài viết: 6.410 | Chủ đề: 115 | |
Danh tiếng: 483 | MAR-22-2017, 09:07 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 09:07 AM bởi Snippsat.] | Một với danh sách hiểu. | 9 | 560 | không thay đổi thành & nbsp; khác biệt. Last Post: deanhystad |
Danh tiếng: 483 | MAR-22-2017, 09:07 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 09:07 AM bởi Snippsat.] | Một với danh sách hiểu. | 1 | 1,537 | không thay đổi thành & nbsp; khác biệt. Last Post: Larz60+ |
Danh tiếng: 483 | MAR-22-2017, 09:07 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 09:07 AM bởi Snippsat.] | Một với danh sách hiểu. | 8 | 1,887 | không thay đổi thành & nbsp; khác biệt. Last Post: naughtyCat |
Danh tiếng: 483 | MAR-22-2017, 09:07 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 09:07 AM bởi Snippsat.] | Một với danh sách hiểu. | 3 | 1,209 | không thay đổi thành & nbsp; khác biệt. Last Post: Alex_James |
Danh tiếng: 483 | MAR-22-2017, 09:07 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 09:07 AM bởi Snippsat.] | Một với danh sách hiểu. | 2 | 1,153 | không thay đổi thành & nbsp; khác biệt. Last Post: knight2000 |
Danh tiếng: 483 | MAR-22-2017, 09:07 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 09:07 AM bởi Snippsat.] | Một với danh sách hiểu. | 2 | 1,338 | không thay đổi thành & nbsp; khác biệt. Last Post: perfringo |
Danh tiếng: 483 | MAR-22-2017, 09:07 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 09:07 AM bởi Snippsat.] | Một với danh sách hiểu. | 4 | 2,013 | không thay đổi thành & nbsp; khác biệt. Last Post: perfringo |
Danh tiếng: 483 | MAR-22-2017, 09:07 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 09:07 AM bởi Snippsat.] | Một với danh sách hiểu. | 1 | 2,387 | không thay đổi thành & nbsp; khác biệt. Last Post: Gribouillis |
Danh tiếng: 483 | MAR-22-2017, 09:07 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 09:07 AM bởi Snippsat.] | Một với danh sách hiểu. | 4 | 1,767 | không thay đổi thành & nbsp; khác biệt. Last Post: quest |
Danh tiếng: 483 | MAR-22-2017, 09:07 AM [Bài đăng này được sửa đổi lần cuối: Mar-22-2017, 09:07 AM bởi Snippsat.] | Một với danh sách hiểu. | 3 | 1,752 | không thay đổi thành & nbsp; khác biệt. Last Post: rpalmer |