Python: 这里使用 [] 是什么意思?

5 投票
4 回答
29169 浏览
提问于 2025-04-16 04:26

这两句在Python中有什么区别呢?

var = foo.bar

var = [foo.bar]

我觉得这会把var变成一个包含foo.bar的列表,但我不太确定。如果真是这样,而且foo.bar已经是一个列表,那在这两种情况下你会得到什么呢?

举个例子:如果foo.bar = [1, 2],我会得到这个吗?

var = foo.bar #[1, 2]

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

4 个回答

1

我觉得这段代码是把变量变成一个包含foo.bar的列表,但我不太确定。如果这是它的行为,而foo.bar已经是一个列表,那在每种情况下你会得到什么呢?

  • 没错,它会创建一个新的列表。

  • 如果foo.bar已经是一个列表,它就会变成一个列表,里面只包含一个列表。

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

是的,这段代码是在创建一个只包含一个元素的列表,这个元素是 foo.bar。

如果 foo.bar 的值是 [1,2],那么你得到的结果确实是 [[1,2]]。

举个例子,

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

再详细解释一下这个具体的例子,

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

[] 是一个空列表。

[foo.bar] 是在创建一个新的列表([]),并把 foo.bar 作为这个列表的第一个元素,这个元素可以通过索引来访问:

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

所以你猜的没错,你把 foo.bar = [1,2] 赋值的操作是完全正确的。

如果你还没有尝试过,我建议你在 Python 的交互式解释器中玩一下这种操作。这样做会简单很多:

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

撰写回答