在Python中正确打印列表
所以我有一个列表:
['x', 3, 'b']
我想要的输出是:
[x, 3, b]
我怎么能在Python中做到这一点?
如果我做str(['x', 3, 'b'])
,我得到一个引号,但我不想引用。
mylist = ['x', 3, 'b'] print '[%s]' % ', '.join(map(str, mylist))
如果你正在使用Python3:
print('[',end='');print(*L, sep=', ', end='');print(']')
我build议使用一个具有连接能力的生成器expression式来接受迭代器,而不是使用map
。
def get_nice_string(list_or_iterator): return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
这里, join
是string类str
的成员函数。 它需要一个参数:一个string的列表(或迭代器),然后返回一个新的string,其中包含所有的元素,在本例中为。
你可以使用它的translate()
方法删除string中所有不需要的字符,对于table
参数使用None
,后面跟一个包含你想删除它的deletechars
参数的字符的string。
lst = ['x', 3, 'b'] print str(lst).translate(None, "'") # [x, 3, b]
如果你使用的是2.6以前版本的Python,那么你需要使用string
模块的translate()
函数,因为在Python 2.6之前,没有添加作为table
参数的能力。 使用它看起来像这样:
import string print string.translate(str(lst), None, "'")
使用string.translate()
函数也将在2.6+,所以使用它可能是可取的。
这是简单的代码,所以如果你是新的,你应该很容易理解。
mylist = ["x", 3, "b"] for items in mylist: print(items)
它可以打印所有的不带引号,就像你想要的。
只使用打印:
>>> l = ['x', 3, 'b'] >>> print(*l, sep='\n') x 3 b >>> print(*l, sep=', ') x, 3, b
这里是一个互动的会话,展示了@ TokenMacGuy的单线程中的一些步骤。 首先他使用map
函数将列表中的每个项目转换为一个string(实际上,他正在创build一个新列表,而不是转换旧列表中的项目)。 然后,他使用string方法join
将这些string与', '
结合起来。 其余的只是string格式,这是非常简单的。 (编辑:这个实例很简单,string格式一般可能有点复杂。)
请注意,使用join
是一种简单而有效的方法,可以从多个子串中构build一个string,比通过向string连续添加string(其中涉及大量的后台复制)更有效。
>>> mylist = ['x', 3, 'b'] >>> m = map(str, mylist) >>> m ['x', '3', 'b'] >>> j = ', '.join(m) >>> j 'x, 3, b'