Các bộ Python có các phương pháp sau:
s.union[t] s | t new set with elements from both s and t
s.update[t] s |= t return set s with elements added from t
Tương tự như vậy, cũng có những điều này:
s.intersection_update[t] s &= t return set s keeping only elements also found in t
s.intersection[t] s & t new set with elements common to s and t
Và như vậy, cho tất cả các hoạt động đại số quan hệ tiêu chuẩn.
Chính xác thì sự khác biệt ở đây là gì? Tôi thấy rằng nó nói rằng các phiên bản cập nhật [] trả về s thay vì một bộ mới, nhưng nếu tôi viết x = s.update[t]
, điều đó có nghĩa là id[x] == id[s]
không? Họ có tham khảo cùng một đối tượng bây giờ không?
Tại sao cả hai bộ phương thức được thực hiện? Nó dường như không thêm bất kỳ chức năng quan trọng nào.
mkrieger1
16.2k4 Huy hiệu vàng50 Huy hiệu bạc58 Huy hiệu Đồng4 gold badges50 silver badges58 bronze badges
Hỏi ngày 16 tháng 12 năm 2012 lúc 21:27Dec 16, 2012 at 21:27
6
Họ rất khác nhau. Một bộ thay đổi tập hợp tại chỗ, trong khi bộ khác để lại bộ gốc một mình và thay vào đó trả về một bản sao.
>>> s = {1, 2, 3}
>>> news = s | {4}
>>> s
set[[1, 2, 3]]
>>> news
set[[1, 2, 3, 4]]
Lưu ý làm thế nào s
vẫn không thay đổi.
>>> s.update[{4}]
>>> s
set[[1, 2, 3, 4]]
Bây giờ tôi đã thay đổi s
. Cũng lưu ý rằng
s.intersection_update[t] s &= t return set s keeping only elements also found in t
s.intersection[t] s & t new set with elements common to s and t
0 dường như không trả lại bất cứ điều gì; Nó đã không trả lại s
cho người gọi và trình thông dịch Python không lặp lại giá trị.Các phương thức thay đổi đối tượng tại chỗ không bao giờ trả về bản gốc trong Python. Giá trị trả lại của họ luôn là
s.intersection_update[t] s &= t return set s keeping only elements also found in t
s.intersection[t] s & t new set with elements common to s and t
2 thay thế [không bao giờ được lặp lại].Đã trả lời ngày 16 tháng 12 năm 2012 lúc 21:29Dec 16, 2012 at 21:29
Martijn Pieters ♦ Martijn Pieters♦Martijn Pieters
997K279 Huy hiệu vàng3925 Huy hiệu bạc3264 Huy hiệu đồng279 gold badges3925 silver badges3264 bronze badges
3
Các phương thức
s.intersection_update[t] s &= t return set s keeping only elements also found in t
s.intersection[t] s & t new set with elements common to s and t
3 sửa đổi tập hợp tại chỗ và không trả về. Các phương thức không có s.intersection_update[t] s &= t return set s keeping only elements also found in t
s.intersection[t] s & t new set with elements common to s and t
4 trả về một đối tượng mới. Bạn gần như chắc chắn không muốn làm x = s.update[t]
, vì điều đó sẽ đặt s.intersection_update[t] s &= t return set s keeping only elements also found in t
s.intersection[t] s & t new set with elements common to s and t
6 thành không ai.>>> x = set[[1, 2]]
>>> x.intersection[set[[2, 3]]]
set[[2]]
>>> x
set[[1, 2]]
>>> x.intersection_update[set[[2, 3]]]
>>> x
set[[2]]
>>> x = x.intersection_update[set[[2, 3]]]
>>> print x
None
Chức năng được thêm vào các phương thức
s.intersection_update[t] s &= t return set s keeping only elements also found in t
s.intersection[t] s & t new set with elements common to s and t
3 là khả năng sửa đổi các bộ hiện có. Nếu bạn chia sẻ một tập hợp giữa nhiều đối tượng, bạn có thể muốn sửa đổi bộ hiện có để các đối tượng khác chia sẻ nó sẽ thấy các thay đổi. Nếu bạn chỉ tạo một bộ mới, các đối tượng khác sẽ không biết về nó.Đã trả lời ngày 16 tháng 12 năm 2012 lúc 21:30Dec 16, 2012 at 21:30
BrenbarnbrenbarnBrenBarn
235K35 Huy hiệu vàng399 Huy hiệu bạc376 Huy hiệu Đồng35 gold badges399 silver badges376 bronze badges
Có vẻ như các tài liệu không nêu rõ theo cách rõ ràng nhất có thể, nhưng
s.intersection_update[t] s &= t return set s keeping only elements also found in t
s.intersection[t] s & t new set with elements common to s and t
8 hoàn toàn không trả lại bất cứ điều gì [tương đương với việc trả lại s.intersection_update[t] s &= t return set s keeping only elements also found in t
s.intersection[t] s & t new set with elements common to s and t
2], cũng không phải là ____. Như >>> s = {1, 2, 3}
>>> news = s | {4}
>>> s
set[[1, 2, 3]]
>>> news
set[[1, 2, 3, 4]]
1 hoặc >>> s = {1, 2, 3}
>>> news = s | {4}
>>> s
set[[1, 2, 3]]
>>> news
set[[1, 2, 3, 4]]
2 hoặc >>> s = {1, 2, 3}
>>> news = s | {4}
>>> s
set[[1, 2, 3]]
>>> news
set[[1, 2, 3, 4]]
3, họ sửa đổi container tại chỗ.return anything at all [which is equivalent to returning s.intersection_update[t] s &= t return set s keeping only elements also found in t
s.intersection[t] s & t new set with elements common to s and t
2], neither does >>> s = {1, 2, 3}
>>> news = s | {4}
>>> s
set[[1, 2, 3]]
>>> news
set[[1, 2, 3, 4]]
0. Like >>> s = {1, 2, 3}
>>> news = s | {4}
>>> s
set[[1, 2, 3]]
>>> news
set[[1, 2, 3, 4]]
1 or >>> s = {1, 2, 3}
>>> news = s | {4}
>>> s
set[[1, 2, 3]]
>>> news
set[[1, 2, 3, 4]]
2 or >>> s = {1, 2, 3}
>>> news = s | {4}
>>> s
set[[1, 2, 3]]
>>> news
set[[1, 2, 3, 4]]
3, they modify the container in place.In [1]: set['abba']
Out[1]: set[['a', 'b']]
In [2]: set['abba'].update[set['c']]
In [3]:
Chỉnh sửa: Trên thực tế, các tài liệu không nói những gì bạn thể hiện trong câu hỏi. Họ nói:
Cập nhật bộ, thêm các yếu tố từ tất cả các yếu tố khác.
và
Cập nhật bộ, chỉ giữ các yếu tố được tìm thấy trong đó và tất cả các yếu tố khác.
Đã trả lời ngày 16 tháng 12 năm 2012 lúc 21:33Dec 16, 2012 at 21:33
Lev Levitskylev LevitskyLev Levitsky
61.5K20 Huy hiệu vàng142 Huy hiệu bạc170 Huy hiệu đồng20 gold badges142 silver badges170 bronze badges
2