Python 如何";适当地;打印列表?

Python 如何";适当地;打印列表?,python,string,Python,String,所以我有一个清单: ['x', 3, 'b'] 我希望输出是: [x, 3, b] 如何在python中实现这一点 如果我使用str(['x',3',b']),我会得到一个带引号的,但我不想要引号。在Python 2中: mylist = ['x', 3, 'b'] print '[%s]' % ', '.join(map(str, mylist)) 在Python 3中(其中,print是一个内置函数,不再是语法特性): 两者都返回: [x, 3, b] 这是使用函数为mylist的每

所以我有一个清单:

['x', 3, 'b']
我希望输出是:

[x, 3, b]
如何在python中实现这一点

如果我使用str(['x',3',b']),我会得到一个带引号的,但我不想要引号。

在Python 2中:

mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
在Python 3中(其中,
print
是一个内置函数,不再是语法特性):

两者都返回:

[x, 3, b]

这是使用函数为mylist的每个元素调用str,创建一个新的字符串列表,然后将该列表加入到一个字符串中。然后,
%
字符串格式运算符替换中的字符串,而不是
“[%s]”

中的
%s
。下面是一个交互式会话,展示了@TokenMacGuy的一行代码中的一些步骤。首先,他使用
map
函数将列表中的每个项目转换为字符串(实际上,他正在创建一个新列表,而不是转换旧列表中的项目)。然后,他使用字符串方法
join
将这些字符串与
,“
组合在一起。剩下的只是字符串格式,这非常简单。(编辑:此实例很简单;字符串格式通常可能有点复杂。)

请注意,使用
join
是一种从多个子字符串构建字符串的简单而有效的方法,其效率远远高于通过在字符串中连续添加字符串(这需要大量幕后复制)来实现的效率

>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'

我建议不要使用
map
,而是使用具有
join
功能的生成器表达式来接受迭代器:

def get_nice_string(list_or_iterator):
    return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"

这里,
join
是string类
str
的成员函数。它接受一个参数:一个字符串列表(或迭代器),然后返回一个新字符串,其中所有元素都由
,连接,如果您使用的是Python3:

print('[',end='');print(*L, sep=', ', end='');print(']')

对于
参数,可以使用其with
None
从字符串中删除所有不需要的字符,然后使用一个字符串,该字符串包含要为其
deletechars
参数删除的字符

lst = ['x', 3, 'b']

print str(lst).translate(None, "'")

# [x, 3, b]
如果您使用的是Python 2.6之前的版本,则需要使用
string
模块的
translate()
函数,因为直到Python 2.6才添加了将
None
作为
参数传递的功能。使用它看起来像这样:

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

使用
.format
进行字符串格式化,

mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
输出:

[x, 3, b]

说明:

[x, 3, b]
  • map
    用于将列表中的每个元素映射到
    string
    类型
  • 这些元素以
    作为分隔符连接成一个字符串
  • 我们在print语句中使用
    [
    ]
    来显示列表大括号
  • 参考:
    我受@AniMenon的启发,写了一个更通俗的pythonic解决方案

    mylist = ['x', 3, 'b']
    print('[{}]'.format(', '.join(map('{}'.format, mylist))))
    
    它只使用
    格式
    方法。没有
    str
    的痕迹,它允许对元素格式进行微调。 例如,如果将浮点数作为列表的元素,则可以通过添加转换说明符来调整其格式,在本例中为
    :.2f

    mylist = [1.8493849, -6.329323, 4000.21222111]
    print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
    
    输出相当不错:

    [1.85, -6.33, 4000.21]
    

    谢谢你,效果很好。你能详细解释一下你在第二行做什么吗?我是python新手。他正在使用
    map
    函数为
    mylist
    的每个元素调用
    str
    ,创建一个新的字符串列表,然后使用
    str.join
    将其合并为一个字符串。然后,他使用
    %
    字符串格式操作符替换
    %s
    中的字符串,而不是
    “[%s]”
    。另一种可能更现代的方法是:
    “[{.0}”。format(,”。join(str(i)代替mylist中的i))
    我倾向于使用
    映射(f,xs)
    (或
    imap
    ,而不是
    (f(x)对于xs中的x)
    ,当
    f
    是预定义的可调用函数时;它倾向于执行更少的字节码,并且通常更紧凑。当然不要映射(lambda x:…,xs)这比
    (…x in xs)
    @user1767754:真的吗?Link?对Python2是一个很好的优化,因为map在2.x中返回一个列表。它在3.x中返回一个生成器,所以在那里没有太大的帮助。我会返回
    “,”。join(str(x)表示列表或迭代器中的x)。join(“[]”)
    @eyquem:聪明,我以前从未见过像这样使用join。不过,这对初学者来说还是有点不透明(因为您使用的是字符串是一个字符串的可移植容器的属性)。唉:
    lst=[“它不是”,3,'b']
    ==>
    [“它不是”,3,b]
    ,还有
    lst=['it't't',3,'b']
    @eyquem:是的,如果有可能的话,避免删除实际上是数据一部分的字符(而不是严格用于划界)自然需要稍微复杂/不同的逻辑。print(*L)在这里做什么?@Sandeps:看,我对此感到困惑。长数据类型是否以某种方式过滤列表?一个更简洁的版本是
    print(end='[');print(*l,sep='',',',end=']\n')
    来解释为什么列表没有“正确”打印,
    print([“Sam”])
    调用
    repr(“Sam”)
    ,它返回
    'Sam'
    (带引号),这与调用
    print(“Sam”时不同
    和python调用
    str(“Sam”)
    ,返回
    Sam
    (不带引号)。有关更多信息,请参阅或。太好了!我发现使用
    .format
    是最具python风格的方式。但是,我当然接受不同意见