Передайте аргументы Print [duplicate]

Синтаксис JavaScript 101. Вот объявление функции:

  function foo () {}  

Обратите внимание: нет точки с запятой: это просто объявления функции. Вам понадобится вызов foo () , чтобы фактически запустить функцию.

Теперь, когда мы добавляем, казалось бы, безобидный восклицательный знак: ! Function foo () { } превращает его в выражение. Теперь это выражение функции.

Конечно, ! не вызывает функцию, но теперь мы можем положить () в end: ! function foo () {} () , который имеет более высокий приоритет, чем ! и мгновенно вызывает функцию.

Итак, что делает автор - сохранение байта на выражение функции; более читаемым способом его написания будет следующее:

  (function () {}) ();   

И наконец, ! возвращает выражение true. Это связано с тем, что по умолчанию все IIFE возвращают undefined , что оставляет нас с ! Undefined , который является true . Не особенно полезно.

83
задан Guillaume Voiron 2 April 2013 в 17:24
поделиться

8 ответов

Предполагая, что вы используете Python 3.x:

print(*myList, sep='\n')

Вы можете получить то же поведение на Python 2.x, используя from __future__ import print_function, как отмечено в комментариях. msgstr "

g2] С заявлением на печать на Python 2.x вам понадобится итерация, в связи с тем, что ваш вопрос о print(p) for p in myList не работает, вы можете просто использовать следующее, что делает то же самое, и все еще одна строка:

for p in myList: print p

Для решения, использующего '\n'.join(), я предпочитаю использование списков и генераторов над map(), поэтому, вероятно, я бы использовал следующее:

print '\n'.join(str(p) for p in myList) 
161
ответ дан Andrew Clark 15 August 2018 в 15:19
поделиться
  • 1
    А если нет, вы можете from __future__ import print_function на python2.6 и новее. – mgilson 2 April 2013 в 17:28
  • 2
    в python 2x с использованием карты немного быстрее, чем использование соединения в понимании списка. – Juan Carlos Moreno 2 April 2013 в 17:33
  • 3
    Почему downvote, действительно ли это связано с разницей в скорости между map() и генератором? Создатель Python также предпочитает понимать и создавать генераторы над map() . – Andrew Clark 2 April 2013 в 17:37
  • 4
    Я не голосовал за вас. Я знаком с этой записью от GVR, которая была его способ сказать, в то время, как будущие версии python не собирались включать это, но они оказались в безопасности. – Juan Carlos Moreno 2 April 2013 в 17:43
  • 5
    Они оставались в Python 3.x, но его смысл в этой статье заключается в том, что [F(x) for x in S] более понятен, чем map(F, S). Производительность там не рассматривается, но я бы ожидал, что разница в скорости будет незначительной. Во всяком случае, меня просто смутило нисходящее движение, извините, я предположил, что это вы! – Andrew Clark 2 April 2013 в 17:48

Расширение ответа @ lucasg (вдохновлено полученным комментарием):

Чтобы получить вывод в формате , вы можете что-то сделать в этих строках:

l = [1,2,5]
print ", ".join('%02d'%x for x in l)

01, 02, 05

Теперь ", " предоставляет разделитель (только между элементами, а не в конце), а строка форматирования '02d' в сочетании с %x дает форматированную строку для каждого элемента x - в этом случае, отформатирован как целое число с двумя цифрами, заполненными нулями нулями.

2
ответ дан Floris 15 August 2018 в 15:19
поделиться

Для Python 2. *:

Если вы перегружаете функцию __str __ () для вашего класса Person, вы можете опустить эту часть с помощью карты (str, ...). Другим способом для этого является создание функции, как вы писали:

def write_list(lst):
    for item in lst:
        print str(item) 

...

write_list(MyList)

В Python 3. * аргумент sep для функции print (). Взгляните на документацию.

3
ответ дан gukoff 15 August 2018 в 15:19
поделиться

Я использую это все время:

#!/usr/bin/python

l = [1,2,3,7] 
print "".join([str(x) for x in l] )
21
ответ дан lucasg 15 August 2018 в 15:19
поделиться
  • 1
    Отлично, вы знаете, где разместить format() для форматирования вывода? %02d p.e. – Reman 25 July 2014 в 14:25
  • 2
    Чтобы добавить 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))

Простой, удобный для чтения и может использоваться вместе со строкой формата.

1
ответ дан Rongzhao Zhang 15 August 2018 в 15:19
поделиться

Для отображения каждого содержимого я использую:

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.')

Надеюсь, я помог.

2
ответ дан ShinyMemes 15 August 2018 в 15:19
поделиться
  • 1
    В качестве примечания, пожалуйста, проверьте ответ выше вас. Вы используете диапазон, который предоставляет значение индекса, i, но вы используете другую переменную, indexval, как ваш индекс? Вы боретесь с простотой питона. для val в my_list: print val делает то же, что и у вас – BretD 27 June 2017 в 22:23

[print(a) for a in list] даст в конце пучок типов None, хотя он выводит все элементы

5
ответ дан ytpillai 15 August 2018 в 15:19
поделиться
0
ответ дан Aethalides 28 October 2018 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: