2013-02-20 3 views
0

Я хотел бы создать два пустых объекта списка. Я попытался использоватьМожно ли создать два объекта с одной командой?

vList,sList = [],[] 

и это похоже на работу. Я никогда не видел этого в любом руководстве (но мой Python по-прежнему очень простой). Для непустых списков я бы сказал, что это вредит читаемости, но нормально ли это делать с одинаковыми, пустыми? Это считается плохой практикой или есть ли какие-либо плохие побочные эффекты?

То же самое относится к (пустым) строкам?

+0

Я думаю, что это нормально, но лучше, если вы поместите пробел после запятых. – Keith

ответ

1

Там нет плохих побочных эффектов, если вы не используете

vList = sList = [] 

, который ссылается на обе переменные в этом списке.

Я не думаю, что PEP8 говорит об этом, но я бы сказал, что разделение назначений на две строки будет намного лучше.

Однако, как упоминалось в @ gorlum0, если объекты связаны и относительно просты, возможно, лучше использовать распаковку кортежа. Если они не связаны друг с другом, читатель, вероятно, смущается, пытаясь понять, почему вы поставили их на одну строку.

+0

В этом случае изменения в vList также происходят в sList, правильно? – RubenGeert

+0

@RubenGeert да, они делают – Volatility

+0

Если объекты _related_ и присваивания просты, он может действительно читать лучше. – gorlum0

1

Это правильный способ сделать это. Даже если несколько назначение кажется, не очень полезно для простых случаев, как ваша, рассмотреть что-то вроде этого (распаковка несколько более сложную последовательность):

>>> d = { 'a': 'x', 'b': 'y', 'c': 'z' } 
>>> for i, (key, value) in enumerate(d.iteritems()): 
...  print (i, key, value) 
(0, 'a', 'x') 
(1, 'c', 'z') 
(2, 'b', 'y') 

Там нет никаких вредных побочных эффектов, если вы иметь в виду, что право перед тем, как будут выполняться какие-либо назначения.

Смежные вопросы