Скажем, я создаю понимание списка, которое выглядит примерно так:
i = range(5)
a = [f(i) for i in i]
для некоторой функции f
. Будет ли использование фиктивного имени, идентичного итератору, когда-либо приводить к неожиданным результатам? Иногда у меня есть имена переменных, которые представляют собой отдельные буквы, и для меня удобнее придерживаться одной и той же буквы, а не назначать новую, например [f(x) for x in x]
вместо [f(i) for i in x]
(например, если буква итератора x
имеет смысл, мне будет интересно, что, черт возьми, такое i
).
[f(x) for x in X]
? - person Elmex80s   schedule 01.05.2017[f(x) for x in x]
более читабельно, чем[f(i) for i in x]
? Здесьx
изначально является списком, аi
(в вашем более позднем примере) является элементом списка. Второй более читабелен. Как удобнее назвать список и элемент списка одной и той же переменной? - person Anonymous   schedule 01.05.2017map()
, как вmap(f,i)
? - person arshajii   schedule 01.05.2017for
, вам может быть это сойдет с рук. При этом пожалуйста, не делайте этого. - person juanpa.arrivillaga   schedule 01.05.2017[f(_) for _ in i]
. Если вам не хочется создавать имя для переменной, которую вы будете использовать только один раз или не будете использовать вообще, просто назовите ее_
, т. е. здесь ничего важного, пожалуйста, продолжайте. - person ForceBru   schedule 01.05.2017i
для ссылки на итерируемый объект вместо элемента, и вы потратите часы, задаваясь вопросом, почему что-то не работает, и злитесь на Python. Или, может быть, вам нужно запустить что-то на Python 2, и вы будете смущены и поражены, когда значениеi
за пределами понимания изменится после завершения понимания. - person user2357112 supports Monica   schedule 01.05.2017for k, v in dct:
. Переменные должны быть различны. Можете ли вы сделать вещи супер запутанными, перегружая переменные? Да. Тебе следует? Нет. Это действительный Py3, который решает проблему и [намеренно] почти нечитаем:print(['no','yes'][any([_ for _ in[([_ for _ in _ if _ in"aeiou"],print("{} has {} vowel(s).".format(_,len([_ for _ in _ if _ in"aeiou"]))))for _ in wordlist[::3]]if len(_[False])>=3])])
. См. repl.it. - person TemporalWolf   schedule 01.05.2017