Python: Что означает использование [] здесь? - PullRequest
5 голосов
/ 22 сентября 2010

Какая разница в этих двух утверждениях в 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 ]

14 голосов
/ 22 сентября 2010

[] - пустой список.

[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]]
3 голосов
/ 22 сентября 2010

Да, он создает список, содержащий один элемент, 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]
1 голос
/ 22 сентября 2010

Я думаю, что это превращает var в список, содержащий foo.bar, но я не уверен. Кроме того, если это поведение и foo.bar - это уже список, что вы получаете в каждом случае?

  • Да, создается новый список.

  • Если foo.bar уже является списком, он просто станет списком, содержащим один список.

    h[1] >>> l = [1, 2]
    h[1] >>> [l]
    [[1, 2]]
    h[3] >>> l[l][0]
    [1, 2]
    
0 голосов
/ 22 сентября 2010

Это в значительной степени означает, что это массив / список вещей с foo.bar, являющимся первым элементом в списке / массиве.

...