在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'