2013-06-28 27 views
54

Tôi đang học python và tôi có một câu hỏi mới về việc khởi tạo bộ. Qua thử nghiệm, tôi đã phát hiện ra rằng một tập thể được khởi tạo như sau:Sử dụng Niềng răng Xoăn để Bắt đầu Đặt

my_set = {'foo', 'bar', 'baz'} 

Có bất kỳ nhược điểm của nó làm theo cách này, như trái ngược với cách tiêu chuẩn của:

my_set = set(['foo', 'bar', 'baz']) 

hoặc là nó chỉ là một câu hỏi về phong cách?

+1

Tài liệu đề cập đến nó, chỉ không có ở đó. Lưu ý rằng đó là tài liệu cho mô-đun không dùng nữa, các bộ * real * hiện đã được tạo sẵn. Nó nằm trong tài liệu "Có gì mới trong Python 2.7" và tham chiếu ngôn ngữ mô tả ngắn gọn nó: http://docs.python.org/2/reference/expressions.html#set-displays – delnan

+0

@delnan Tôi sử dụng python 2.7, vì vậy Tôi không nghĩ rằng để tìm trong 3 tài liệu python. Liên kết tôi đăng là 2.7, nhưng nó không đề cập đến điều này. – fvrghl

+1

Tôi kể từ khi chỉnh sửa bình luận của tôi, 2,7 tài liệu cũng đề cập đến điều này. Liên kết bạn đăng đã lỗi thời, một di tích của quá khứ, sai, không được chấp nhận.Hãy quên rằng nó tồn tại và sử dụng những gì nó tự cho bạn sử dụng để thay thế: http://docs.python.org/2/library/stdtypes.html#set và http://docs.python.org/2/library/stdtypes .html # frozenset – delnan

Trả lời

51

Có hai vấn đề rõ ràng với cú pháp đen thiết lập:

my_set = {'foo', 'bar', 'baz'} 
  1. Đó là không có sẵn trước Python 2.7

  2. Không có cách nào để diễn tả một tập rỗng sử dụng cú pháp (sử dụng {} tạo ra một dict trống)

Những người có thể hoặc có thể không quan trọng đối với bạn.

Phần tài liệu phác thảo cú pháp này là here.

16

Từ Python 3 documentation (cùng giữ cho python 2.7):

niềng răng Quăn hay set() chức năng có thể được sử dụng để tạo ra bộ. Lưu ý: để tạo bộ trống, bạn phải sử dụng set(), chứ không phải {}; sau tạo một từ điển trống, một cấu trúc dữ liệu mà chúng ta thảo luận trong phần tiếp theo.

trong python 2.7:

>>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'} 
>>> my_set 
set(['bar', 'foo', 'baz']) 

Hãy nhận biết rằng {} cũng được sử dụng cho map/dict:

>>> m = {'a':2,3:'d'} 
>>> m[3] 
'd' 
>>> m={} 
>>> type(m) 
<type 'dict'> 

Người ta có thể sử dụng bộ hiểu:

>>> a = {x for x in """didn't know about {} and sets """ if x not in 'set' } 
>>> a 
set(['a', ' ', 'b', 'd', "'", 'i', 'k', 'o', 'n', 'u', 'w', '{', '}']) 
28

C ompare cũng có sự khác biệt giữa {}set() với một đối số từ duy nhất.

>>> a = set('aardvark') 
>>> a 
{'d', 'v', 'a', 'r', 'k'} 
>>> b = {'aardvark'} 
>>> b 
{'aardvark'} 

nhưng cả hai ab là các bộ.

+2

đó là lý do tại sao tôi muốn tự nhắc mình. []) 'thay vì chỉ' set() '. –

+0

'set()' luôn lấy một đối số. Một lần lặp. –

Các vấn đề liên quan