Синтаксис JavaScript 101. Вот объявление функции:
function foo () {}
Обратите внимание: нет точки с запятой: это просто объявления функции. Вам понадобится вызов foo ()
, чтобы фактически запустить функцию.
Теперь, когда мы добавляем, казалось бы, безобидный восклицательный знак: ! Function foo () { }
превращает его в выражение. Теперь это выражение функции.
Конечно, !
не вызывает функцию, но теперь мы можем положить ()
в end: ! function foo () {} ()
, который имеет более высокий приоритет, чем !
и мгновенно вызывает функцию.
Итак, что делает автор - сохранение байта на выражение функции; более читаемым способом его написания будет следующее:
(function () {}) ();
И наконец, !
возвращает выражение true. Это связано с тем, что по умолчанию все IIFE возвращают undefined
, что оставляет нас с ! Undefined
, который является true
. Не особенно полезно.
Предполагая, что вы используете Python 3.x:
print(*myList, sep='\n')
Вы можете получить то же поведение на Python 2.x, используя from __future__ import print_function
, как отмечено в комментариях. msgstr "
print(p) for p in myList
не работает, вы можете просто использовать следующее, что делает то же самое, и все еще одна строка: for p in myList: print p
Для решения, использующего '\n'.join()
, я предпочитаю использование списков и генераторов над map()
, поэтому, вероятно, я бы использовал следующее:
print '\n'.join(str(p) for p in myList)
Расширение ответа @ lucasg (вдохновлено полученным комментарием):
Чтобы получить вывод в формате , вы можете что-то сделать в этих строках:
l = [1,2,5]
print ", ".join('%02d'%x for x in l)
01, 02, 05
Теперь ", "
предоставляет разделитель (только между элементами, а не в конце), а строка форматирования '02d'
в сочетании с %x
дает форматированную строку для каждого элемента x
- в этом случае, отформатирован как целое число с двумя цифрами, заполненными нулями нулями.
Для Python 2. *:
Если вы перегружаете функцию __str __ () для вашего класса Person, вы можете опустить эту часть с помощью карты (str, ...). Другим способом для этого является создание функции, как вы писали:
def write_list(lst):
for item in lst:
print str(item)
...
write_list(MyList)
В Python 3. * аргумент sep для функции print (). Взгляните на документацию.
Я использую это все время:
#!/usr/bin/python
l = [1,2,3,7]
print "".join([str(x) for x in l] )
format()
для форматирования вывода? %02d
p.e.
– Reman
25 July 2014 в 14:25
format()
, замените str(x)
на строку формата: print " ".join(["{:02d}".format(x) for x in l])
– ChrisFreeman
26 April 2016 в 06:34
Я думаю, что это наиболее удобно, если вы просто хотите увидеть содержимое в списке:
myList = ['foo', 'bar']
print('myList is %s' % str(myList))
Простой, удобный для чтения и может использоваться вместе со строкой формата.
Для отображения каждого содержимого я использую:
mylist = ['foo', 'bar']
indexval = 0
for i in range(len(mylist)):
print(mylist[indexval])
indexval += 1
Пример использования в функции:
def showAll(listname, startat):
indexval = startat
try:
for i in range(len(mylist)):
print(mylist[indexval])
indexval = indexval + 1
except IndexError:
print('That index value you gave is out of range.')
Надеюсь, я помог.
[print(a) for a in list]
даст в конце пучок типов None, хотя он выводит все элементы
from __future__ import print_function
на python2.6 и новее. – mgilson 2 April 2013 в 17:28map()
и генератором? Создатель Python также предпочитает понимать и создавать генераторы надmap()
. – Andrew Clark 2 April 2013 в 17:37[F(x) for x in S]
более понятен, чемmap(F, S)
. Производительность там не рассматривается, но я бы ожидал, что разница в скорости будет незначительной. Во всяком случае, меня просто смутило нисходящее движение, извините, я предположил, что это вы! – Andrew Clark 2 April 2013 в 17:48