Инициализируйте много строковых переменных - PullRequest
7 голосов
/ 27 января 2012

Я инициализирую множество строковых переменных следующим образом:

a, b, c, d, e, f, g, h = "", "", "", "", "", "", "", ""

Вы можете видеть, что это выглядит не очень хорошо (более того, переменные имеют более длинные имена). Есть ли более компактный ярлык?

Ответы [ 6 ]

14 голосов
/ 27 января 2012

Определенно более компактный:

a=b=c=d=e=f=g=h=""
9 голосов
/ 27 января 2012

В качестве альтернативного ответа на решение a=b=c=...=value попробуйте:

a, b, c, d, e, f, g, h = [""]*8

Хотя, если вы делаете это, может иметь смысл поместить переменные в список, если они имеют какое-то отношение к каждому из них.другой.

2 голосов
/ 27 января 2012
from collections import defaultdict

Для инициализации:

attrs = defaultdict(str)

Чтобы получить 'a' значение:

print attrs['a'] # -> ''

Чтобы изменить это:

attrs['a'] = 'abc'
2 голосов
/ 27 января 2012

Для потомков:

from itertools import repeat
a, b, c, d, e, f, g, h, *_ = repeat("")
1 голос
/ 24 апреля 2018

Хотя многие из представленных здесь решений симпатичны, я собираюсь доказать, что следующее является наиболее компактным решением, которое вы должны рассмотреть:

a = ""
b = ""
c = ""
d = ""
e = ""
f = ""
g = ""

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

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

Если вы обнаружите, что вам нужно инициализировать более 7 переменных, я бы предложил ваш проект нуждается в пересмотре . Попробуйте заменить эти переменные более динамичным использованием словаря или списка.

0 голосов
/ 05 октября 2017

попробуйте это.

a, b, c, d, e, f, g, h = ["" for i in range(8)]
...