Hướng dẫn are sets immutable in python - là các bộ bất biến trong python

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

>>>> 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

Hướng dẫn are sets immutable in python - là các bộ bất biến trong python

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.

Hướng dẫn are sets immutable in python - là các bộ bất biến trong python

Đã 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ó.

>>>> 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ử

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
>>>> 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

Hướng dẫn are sets immutable in python - là các bộ bất biến trong python

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

Hướng dẫn are sets immutable in python - là các bộ bất biến trong python

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?

Hướng dẫn are sets immutable in python - là các bộ bất biến trong python

Đú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
>>>> 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.11 gold badges95 silver badges102 bronze badges

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

set1 = {1,2,3}

set2 = {1,2,[1,2]}  --> unhashable type: 'list'
# Set elements should be immutable.
9is đã có trong s.5 silver badges21 bronze badges

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"

Hướng dẫn are sets immutable in python - là các bộ bất biến trong python

Hướng dẫn are sets immutable in python - là các bộ bất biến trong python

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

Hướng dẫn are sets immutable in python - là các bộ bất biến trong python

1

Là các yếu tố của các tập hợp bất biến trong Python?

Mỗi yếu tố tập hợp là duy nhất (không có bản sao) và phải là bất biến (không thể thay đổi).Tuy nhiên, một tập hợp là có thể thay đổi.Chúng ta có thể thêm hoặc loại bỏ các mục khỏi nó.Các bộ cũng có thể được sử dụng để thực hiện các hoạt động tập toán học như liên minh, giao lộ, sự khác biệt đối xứng, v.v. (cannot be changed). However, a set itself is mutable. We can add or remove items from it. Sets can also be used to perform mathematical set operations like union, intersection, symmetric difference, etc.

Điều gì là bất biến trong Python?

Bất biến là khi không có thay đổi là có thể theo thời gian.Trong Python, nếu giá trị của một đối tượng không thể thay đổi theo thời gian, thì nó được gọi là bất biến.Sau khi được tạo, giá trị của các đối tượng này là vĩnh viễn.when no change is possible over time. In Python, if the value of an object cannot be changed over time, then it is known as immutable. Once created, the value of these objects is permanent.

Một bộ có thể chứa các yếu tố có thể thay đổi?

Xác định một bộ được 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.A set itself may be modified, but the elements contained in the set must be of an immutable type.

Những loại dữ liệu là bất biến trong Python?

Và các loại dữ liệu bất biến trong Python:..
Integers..
Số điểm nổi ..
Booleans..
Strings..
Tuples..