Хотя в Python нет операторов переключения, вы можете эмулировать их с помощью словарей. Например, если вам нужен такой переключатель:
a=L[-1]
*_,a=L
Вы могли бы использовать a=list(range(10))
*a,=range(10)
statements, or you could use this:
>>> a,*b,c=range(5)
>>> a
0
>>> b
[1, 2, 3]
>>> c
4
или это:
exec"pass;"*8
что лучше, если все пути кода являются функциями с одинаковыми параметрами.
Чтобы поддержать значение по умолчанию, сделайте следующее:
r=1,
for i in r*8:pass
for i in r*1000:pass
(или это:)
for i in range(8):pass
Еще одним преимуществом этого является то, что если у вас есть избыточности, вы можете просто добавить их после конца словаря:
for i in[1]*8:pass
А если вы просто хотите использовать переключатель для возврата значения:
i
Вы могли бы просто сделать это:
*
||answer||
циклы до 4 элементов, возможно, лучше предоставить кортеж вместо использования диапазона
range(x)
против
[1, 2, 3, 4][::-1] # => [4, 3, 2, 1]
||answer||
С выпуском Питон 3.5, манипулирование списками, кортежами, наборами и словарями стало еще интереснее.
Превращение итерации в набор/список
Сравните пары:
s=['a','b','c','d','e']
s=list('abcde')
*s,='abcde'
Гораздо короче! Однако учтите, что если вы просто хотите преобразовать что-то в список и присвоить его переменной, обычное расширенная итеративная распаковка короче:
x=list(i) #the default way
*x,=i #using starred assignment -> 4 char fewer
Аналогичный синтаксис работает для кортежей:
i = (1,2,3,4)
i = range(4)
i = (x**2 for x in range(5))
что похоже на расширенную итерируемую распаковку, но со звездочкой и запятой на другой стороне.
Объединение списков/кортежей
Распаковка немного короче, чем конкатенация, если вам нужно добавить список/кортеж с обеих сторон:
a or4
Печать содержимого нескольких списков
Это не ограничивается 4or a
, but it's definitely where most of the mileage will come from. PEP448 now allows for multiple unpacking, like so:
if i==4and j==4:
pass
Обновление нескольких элементов словаря
Вероятно, это будет происходить не очень часто, но синтаксис можно использовать для экономии на обновлении словарей, если вы обновляете как минимум три элемента:
if i==4 and j==4:
pass
Это, по сути, сводит на нет всякую необходимость в E
.