2010-10-22 28 views
6

Và nó được gọi là gì? Tôi không biết cách tìm kiếm nó; Tôi đã thử gọi nó là dấu chấm lửng với Google. Tôi không có nghĩa là trong đầu ra tương tác khi chấm được sử dụng để chỉ ra rằng các mảng đầy đủ không được hiển thị, nhưng như trong đoạn code tôi đang nhìn,Điều gì có nghĩa là ... trong mã có nhiều ký tự?

xTensor0[...] = xVTensor[..., 0]

Từ thí nghiệm của tôi, nó dường như hoạt động tương tự như : trong lập chỉ mục, nhưng viết tắt cho nhiều số :, làm cho x[:,:,1] tương đương với x[...,1].

+3

Xem http://stackoverflow.com/questions/772124/what-does-the-python-ellipsis-object-do và http://stackoverflow.com/questions/118370/how-do-you-use-the- ellipsis-slicing-syntax-in-python – sdolan

+0

tuyệt vời, không thể tìm kiếm nó. – Thomas

+1

Ha, nhưng nó được gọi là "dấu chấm lửng", vì vậy tôi nên có khả năng. Tôi đã từ bỏ sớm khi "python numpy ..." không hoạt động. Cảm ơn sdolan. – Thomas

Trả lời

7

Có, bạn nói đúng. Nó điền vào nhiều như : theo yêu cầu. Sự khác biệt duy nhất xảy ra khi bạn sử dụng nhiều dấu ba chấm. Trong trường hợp đó, dấu ba chấm đầu tiên hoạt động theo cùng một cách, nhưng mỗi dấu ba chấm còn lại được chuyển đổi thành một đơn :.

3

Mặc dù tính năng này tồn tại chủ yếu để hỗ trợ NumPy và khác, mô-đun tương tự, đó là một tính năng cốt lõi của ngôn ngữ và có thể được sử dụng bất cứ nơi nào, như vậy:

>>> class foo: 
... def __getitem__(self, key): 
...  return key 
... 
>>> aFoo = foo() 
>>> aFoo[..., 1] 
(Ellipsis, 1) 
>>> 

hoặc thậm chí:

>>> derp = {} 
>>> derp[..., 1] = "herp" 
>>> derp 
{(Ellipsis, 1): 'herp'}