39
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.
Có phải các bộ trong Python có thể thay đổi?
Nói cách khác, nếu tôi làm điều này:
x = set[[1, 2, 3]]
y = x
y |= set[[4, 5, 6]]
Có phải x
và
>>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
0 vẫn chỉ vào cùng một đối tượng, hoặc là một bộ mới được tạo và gán cho >>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
0?Đã hỏi ngày 7 tháng 1 năm 2013 lúc 9:51Jan 7, 2013 at 9:51
10
>>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
- Bộ không được đặt hàng.
- Đặt các yếu tố là duy nhất. Các yếu tố trùng lặp không được phép.
- Một tập hợp có thể được sửa đổi, nhưng các yếu tố có trong tập hợp phải thuộc loại bất biến.
set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
Kết luận: Bộ có thể thay đổi.
Đã trả lời ngày 7 tháng 1 năm 2013 lúc 9:53Jan 7, 2013 at 9:53
2
Hai câu hỏi của bạn là khác nhau.
Có phải bộ Python có thể thay đổi không?
Có: "có thể thay đổi" có nghĩa là bạn có thể thay đổi đối tượng. Ví dụ: số nguyên không thể thay đổi: bạn không thể thay đổi số
>>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
2 thành bất cứ điều gì khác. Tuy nhiên, bạn có thể thêm các yếu tố vào một tập hợp, điều này làm biến đổi nó.3 có thay đổi>>>> x = set[[1, 2, 3]] >>>> y = x >>>> >>>> y |= set[[4, 5, 6]] >>>> print x set[[1, 2, 3, 4, 5, 6]] >>>> print y set[[1, 2, 3, 4, 5, 6]]
x
không?
Đúng. Mã
>>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
5 có nghĩa là "liên kết tên >>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
0 có nghĩa là cùng một đối tượng mà tên x
hiện đại diện". Mã >>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
8 gọi phương thức ma thuật >>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
9 dưới mui xe, làm biến đổi đối tượng được biểu thị bằng tên >>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
0. Vì đây là cùng một đối tượng như được đại diện bởi x
, bạn nên mong đợi bộ sẽ thay đổi.Bạn có thể kiểm tra xem hai tên có hướng đến chính xác cùng một đối tượng bằng toán tử
set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
2 không: set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
3 chỉ nếu các đối tượng được biểu thị bằng tên x
và >>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
0 là cùng một đối tượng.Nếu bạn muốn sao chép một đối tượng, cú pháp thông thường là
set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
6 hoặc set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
7. Tuy nhiên, đây chỉ là một bản sao nông: mặc dù nó sao chép đối tượng đã đặt, các thành viên của đối tượng nói không được sao chép. Nếu bạn muốn một DeepCopy, hãy sử dụng set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
8.Đã trả lời ngày 7 tháng 1 năm 2013 lúc 10:00Jan 7, 2013 at 10:00
KatrielkatrielKatriel
117K19 Huy hiệu vàng133 Huy hiệu bạc165 Huy hiệu Đồng19 gold badges133 silver badges165 bronze badges
15
Các bộ Python được phân loại thành hai loại. Có thể thay đổi và bất biến. Một tập hợp được tạo với 'Set' có thể thay đổi trong khi bản được tạo bằng 'Frozenset' là bất biến.
>>> s = set[list['hello']]
>>> type[s]
Các phương pháp sau đây là cho các bộ có thể thay đổi.
S.ADD [Mục] - Thêm mục vào s. Không có tác dụng nếu
set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
9is đã có trong s.s.clear [] - Loại bỏ tất cả các mục khỏi s.
s.difference_update [t] - Loại bỏ tất cả các mục khỏi s cũng có trong t.
S.Discard [Mục] - Loại bỏ mục khỏi s. Nếu mục không phải là thành viên của s, không có gì xảy ra.
Tất cả các hoạt động này sửa đổi các tập hợp tại chỗ. Tham số T có thể là bất kỳ đối tượng hỗ trợ lặp lại.
Đã trả lời ngày 27 tháng 7 năm 2018 lúc 15:01Jul 27, 2018 at 15:01
Vivekvivekvivek
4837 Huy hiệu bạc13 Huy hiệu Đồng7 silver badges13 bronze badges
Sau khi thay đổi tập hợp, ngay cả tài liệu tham khảo đối tượng của họ đều khớp. Tôi không biết tại sao sách giáo khoa nói rằng các bộ là bất biến.
>>> s1 ={1,2,3}
>>> id[s1]
140061513171016
>>> s1|={5,6,7}
>>> s1
{1, 2, 3, 5, 6, 7}
>>> id[s1]
140061513171016
Đã trả lời ngày 7 tháng 2 năm 2018 lúc 8:32Feb 7, 2018 at 8:32
4
print x,y
Và bạn thấy cả hai đều chỉ vào cùng một tập hợp:
set[[1, 2, 3, 4, 5, 6]] set[[1, 2, 3, 4, 5, 6]]
Đã trả lời ngày 7 tháng 1 năm 2013 lúc 9:53Jan 7, 2013 at 9:53
Hai câu hỏi của bạn là khác nhau.eumiro
Có phải bộ Python có thể thay đổi không?34 gold badges294 silver badges259 bronze badges
Có: "có thể thay đổi" có nghĩa là bạn có thể thay đổi đối tượng. Ví dụ: số nguyên không thể thay đổi: bạn không thể thay đổi số
>>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
2 thành bất cứ điều gì khác. Tuy nhiên, bạn có thể thêm các yếu tố vào một tập hợp, điều này làm biến đổi nó.s = {2,3,4,5,6}
type[s]
s.add[9]
s
{2, 3, 4, 5, 6, 9}
>>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
3 có thay đổi x
không?
Đúng. Mã
>>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
5 có nghĩa là "liên kết tên >>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
0 có nghĩa là cùng một đối tượng mà tên x
hiện đại diện". Mã >>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
8 gọi phương thức ma thuật >>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
9 dưới mui xe, làm biến đổi đối tượng được biểu thị bằng tên >>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
0. Vì đây là cùng một đối tượng như được đại diện bởi x
, bạn nên mong đợi bộ sẽ thay đổi.Bạn có thể kiểm tra xem hai tên có hướng đến chính xác cùng một đối tượng bằng toán tử
2 không: set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
3 chỉ nếu các đối tượng được biểu thị bằng tên set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
x
và
0 là cùng một đối tượng.11 gold badges95 silver badges102 bronze badges>>>> x = set[[1, 2, 3]]
>>>> y = x
>>>>
>>>> y |= set[[4, 5, 6]]
>>>> print x
set[[1, 2, 3, 4, 5, 6]]
>>>> print y
set[[1, 2, 3, 4, 5, 6]]
Nếu bạn muốn sao chép một đối tượng, cú pháp thông thường là
set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
6 hoặc set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
7. Tuy nhiên, đây chỉ là một bản sao nông: mặc dù nó sao chép đối tượng đã đặt, các thành viên của đối tượng nói không được sao chép. Nếu bạn muốn một DeepCopy, hãy sử dụng set1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
8.Jul 11, 2019 at 10:55
Đã trả lời ngày 7 tháng 1 năm 2013 lúc 10:00
s = set[[[1,2,3],[4,5,6]]]
Katrielkatriel
117K19 Huy hiệu vàng133 Huy hiệu bạc165 Huy hiệu Đồng
Mutable elements are
not hashable
Immutable elements are hashable
Các bộ Python được phân loại thành hai loại. Có thể thay đổi và bất biến. Một tập hợp được tạo với 'Set' có thể thay đổi trong khi bản được tạo bằng 'Frozenset' là bất biến.
Các phương pháp sau đây là cho các bộ có thể thay đổi.
S.ADD [Mục] - Thêm mục vào s. Không có tác dụng nếu
9is đã có trong s.5 silver badges21 bronze badgesset1 = {1,2,3}
set2 = {1,2,[1,2]} --> unhashable type: 'list'
# Set elements should be immutable.
s.clear [] - Loại bỏ tất cả các mục khỏi s.Aug 14, 2019 at 12:30
s.difference_update [t] - Loại bỏ tất cả các mục khỏi s cũng có trong t.Learning Python 5th Edition by Mark Lutz - O'Reilly Publications"
S.Discard [Mục] - Loại bỏ mục khỏi s. Nếu mục không phải là thành viên của s, không có gì xảy ra.Dec 25, 2017 at 7:13
1