打印参数

时间:2016-03-21 12:17:42

标签: python iterator

我觉得这对先进的pythoners很容易,但我找不到它(主要是因为我不知道如何命名问题:

fruits = ['banana','apple','lemon']

print("> %s,%s,%s,%s <" % ('peach',[x for x in fruits]))

这当然不起作用,因为左侧部分已填满:

> 'peach',['banana','apple','lemon'],???,??? <

所以这个错误导致:

  

TypeError:没有足够的格式字符串参数(只有两个四分之二%s&#39;被填充

这就是我想要的:

> 'peach','banana','apple','lemon' <
  1. 如何正确地做到这一点?

  2. ('peach',[x for x in fruit])之后的部分名称是什么?

  3. "%s,%s,%s,%s"之前的部分名称是什么? &#34;格式化字符串&#34;?
  4. 更新

    [x for fruits in]就是一个简单的例子 - 真实的更复杂:

    fruits = ['banana','apple','lemon']
    
    for i in fruits:
      count[i] = 'one'
    
    print("> %s,%s,%s,%s <" % ('two',[count[x] for x in fruits]))
    

2 个答案:

答案 0 :(得分:2)

你应该连接两个元组:

print("> %s,%s,%s,%s <" % (('peach',) + tuple(x for x in fruits)))

%s被称为conversion specifier %之后的内容称为mapping key 引号内的是format string

(条款取自docs

从Python2.6开始,不推荐使用%进行格式化。我相信。相反,请使用.format()

print("> {},{},{},{} <".format('peach', *[x for x in fruits]))

我无法相信我错过了它,但正如评论中所提到的,您不需要使用列表理解。您可以使用fruits

print("> %s,%s,%s,%s <" % (('peach',) + tuple(fruits)))

print("> {},{},{},{} <".format('peach', *fruits))

答案 1 :(得分:2)

这里有几个方法可以做到。您基本上想要为%运算符创建一个元组:

>>> fruits = ['banana', 'apple', 'lemon']

>>> print("> %s,%s,%s,%s <" % tuple(['peach'] + fruits))
> peach,banana,apple,lemon <

>>> print("> %s,%s,%s,%s <" % (('peach',) + tuple(fruits)))
> peach,banana,apple,lemon <
>>> 

编辑:如果你想做一些需要理解的爱好者,那不是问题:

>>> print("> %s,%s,%s,%s <" % (('peach',) + tuple(x for x in fruits)))
> peach,banana,apple,lemon <

>>> print("> %s,%s,%s,%s <" % (('peach',) + tuple(x.upper() for x in fruits)))
> peach,BANANA,APPLE,LEMON <

编辑:如果您想使用新的样式格式,您可以执行以下操作:

>>> print("> {},{},{},{} <".format('peach', *[x.upper() for x in fruits]))
> peach,BANANA,APPLE,LEMON <