2010-09-21 31 views
5

Sự khác biệt trong hai câu lệnh này trong python là gì?Python: Việc sử dụng [] có ý nghĩa gì ở đây?

var = foo.bar 

var = [foo.bar] 

Tôi nghĩ rằng đó là làm cho var vào một danh sách có chứa foo.bar nhưng tôi không chắc chắn. Ngoài ra nếu đây là hành vi và foo.bar đã là một danh sách những gì bạn nhận được trong mỗi trường hợp?

Ví dụ: nếu foo.bar = [1, 2] tôi có nhận được thông báo này không?

var = foo.bar #[1, 2] 

var = [foo.bar] #[[1,2]] where [1,2] is the first element in a multidimensional list 
+0

Cảm ơn bạn đã trả lời nhanh chóng rõ ràng. –

+1

Khi bạn thử nó, bạn đã thấy gì? Ngoài ra, bạn đang sử dụng hướng dẫn nào? –

Trả lời

14

[] là một danh sách rỗng.

[foo.bar] đang tạo ra một danh sách mới ([]) với foo.bar như mục đầu tiên trong danh sách, sau đó có thể được tham chiếu bởi chỉ số của nó:

var = [foo.bar] 
var[0] == foo.bar # returns True 

Vì vậy đoán của bạn rằng việc chuyển nhượng lại foo.bar = [1,2] là chính xác đúng .

Nếu bạn chưa có, tôi khuyên bạn nên chơi xung quanh với loại điều này trong trình thông dịch tương tác Python. Nó làm cho nó khá dễ dàng:

>>> [] 
[] 
>>> foobar = [1,2] 
>>> foobar 
[1, 2] 
>>> [foobar] 
[[1, 2]] 
1

Tôi nghĩ rằng đó là làm cho var vào một danh sách có chứa foo.bar nhưng tôi không chắc chắn. Ngoài ra nếu đây là hành vi và foo.bar đã là một danh sách những gì bạn nhận được trong mỗi trường hợp?

  • Có, nó tạo danh sách mới.

  • Nếu foo.bar đã là một danh sách, nó sẽ đơn giản trở thành một danh sách, chứa một danh sách.

    h[1] >>> l = [1, 2] 
    h[1] >>> [l] 
    [[1, 2]] 
    h[3] >>> l[l][0] 
    [1, 2] 
    
3

Vâng, nó làm cho một danh sách có chứa một yếu tố, foo.bar.

Nếu foo.bar là [1,2], bạn thực sự nhận được [[1,2]].

Ví dụ,

>> a=[] 
>> a.append([1,2]) 
>> a[0] 
[1,2] 
>> b=[[1,2]] 
>> b[0] 
[1,2] 

Để xây dựng một chút thêm về rằng ví dụ chính xác,

>> class Foos: 
>> bar=[1,2] 
>> foo=Foos() 
>> foo.bar 
[1,2] 
>> a=[foo.bar] 
>> a 
[[1,2]] 
>> a[0] 
[1,2] 
0

Điều đó khá nhiều có nghĩa là nó là một mảng/danh sách các công cụ với foo.bar là mục đầu tiên trong danh sách/mảng.

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