5

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

4 回答 4

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]]
于 2010-09-21T22:06:02.983 回答
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]
于 2010-09-21T22:08:31.693 回答
1

我认为它正在将 var 放入包含 foo.bar 的列表中,但我不确定。此外,如果这是行为并且 foo.bar 已经是一个列表,那么在每种情况下你会得到什么?

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

  • 如果foo.bar已经是一个列表,它将简单地变成一个列表,包含一个列表。

    h[1] >>> l = [1, 2]
    h[1] >>> [l]
    [[1, 2]]
    h[3] >>> l[l][0]
    [1, 2]
    
于 2010-09-21T22:08:12.997 回答
0

这几乎意味着它是一个数组/列表,其中 foo.bar 是列表/数组中的第一项。

于 2010-09-21T22:40:18.170 回答