What is the difference in these two statements in python?
var = foo.bar
and
var = [foo.bar]
I think it is making var into a list containing foo.bar but I am unsure. Also if this is the behavior and foo.bar is already a list what开发者_如何学编程 do you get in each case?
For example: if foo.bar = [1, 2] would I get this?
var = foo.bar #[1, 2]
and
var = [foo.bar] #[[1,2]] where [1,2] is the first element in a multidimensional list
[]
is an empty list.
[foo.bar]
is creating a new list ([]
) with foo.bar
as the first item in the list, which can then be referenced by its index:
var = [foo.bar]
var[0] == foo.bar # returns True
So your guess that your assignment of foo.bar = [1,2]
is exactly right.
If you haven't already, I recommend playing around with this kind of thing in the Python interactive interpreter. It makes it pretty easy:
>>> []
[]
>>> foobar = [1,2]
>>> foobar
[1, 2]
>>> [foobar]
[[1, 2]]
Yes, it's making a list containing one element, foo.bar.
If foo.bar is [1,2]
, you indeed get [[1,2]].
For instance,
>> a=[]
>> a.append([1,2])
>> a[0]
[1,2]
>> b=[[1,2]]
>> b[0]
[1,2]
To elaborate a bit more on that exact example,
>> class Foos:
>> bar=[1,2]
>> foo=Foos()
>> foo.bar
[1,2]
>> a=[foo.bar]
>> a
[[1,2]]
>> a[0]
[1,2]
I think it is making var into a list containing foo.bar but I am unsure. Also if this is the behavior and foo.bar is already a list what do you get in each case?
Yes, it creates a new list.
If
foo.bar
is already a list, it will simply become a list, containing one list.h[1] >>> l = [1, 2] h[1] >>> [l] [[1, 2]] h[3] >>> l[l][0] [1, 2]
That pretty much means it's an array/list of stuff with foo.bar being the first item in the list/array.
精彩评论