如何"正确"打印列表?

Oba*_*aid 85 python string

所以我有一个清单:

['x', 3, 'b']

我希望输出为:

[x, 3, b]

我怎么能在python中这样做?

如果我这样做str(['x', 3, 'b']),我会得到一个引号,但我不想引用.

Sin*_*ion 173

在Python 2中:

mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
Run Code Online (Sandbox Code Playgroud)

在Python 3中(其中print是内置函数而不是语法特性):

mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
Run Code Online (Sandbox Code Playgroud)

两者都回归:

[x, 3, b]
Run Code Online (Sandbox Code Playgroud)

这是使用map()函数为mylist的每个元素调用str ,创建一个新的字符串列表,然后将其连接到一个字符串中str.join().然后,%字符串格式化运算符替换字符串而不是%sin "[%s]".

  • 他使用`map`函数为`mylist`的每个元素调用`str`,创建一个新的字符串列表,然后用`str.join`连接成一个字符串.然后,他使用`%`字符串格式化运算符替换`"[%s]"`中的字符串而不是'%s`. (17认同)
  • 另一种方法可能更现代:`"[{0}]".format(",".join(str(i)for i in mylist)) (5认同)
  • 谢谢你,这很棒.你能详细解释一下你在第二行做什么吗?我是python的新手. (4认同)
  • 我更喜欢`map(f,xs)`(或python2.x中的`imap`)而``(f(x)for x in xs)`,当`f`是预定义的可调用时; 往往会执行更少的字节码,并且通常更紧凑.当然*不要*`map(lambda x:...,xs)`比`(... xs中的x更糟)` (2认同)

ree*_*997 15

这是一个简单的代码,所以如果你是新手,你应该很容易理解它.

    mylist = ["x", 3, "b"]
    for items in mylist:
        print(items)
Run Code Online (Sandbox Code Playgroud)

它打印所有这些都没有引号,就像你想要的那样.


Kab*_*bie 13

如果您使用的是Python3:

print('[',end='');print(*L, sep=', ', end='');print(']')
Run Code Online (Sandbox Code Playgroud)

  • @sandeeps:请参阅https://docs.python.org/3/reference/expressions.html#calls (2认同)

Fin*_*inn 12

仅使用打印:

>>> l = ['x', 3, 'b']
>>> print(*l, sep='\n')
x
3
b
>>> print(*l, sep=', ')
x, 3, b
Run Code Online (Sandbox Code Playgroud)


Set*_*son 9

map我建议使用一个join能够接受迭代器的生成器表达式,而不是使用它:

def get_nice_string(list_or_iterator):
    return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
Run Code Online (Sandbox Code Playgroud)

这里join是字符串类的成员函数str.它需要一个参数:字符串的列表(或迭代器),然后返回一个新字符串,其中包含所有连接的元素,在本例中,.

  • 我会返回``",".join(str(x)for list in list_or_iterator).join('[]')`` (7认同)
  • Python 2的一个很好的优化,因为map返回2.x中的列表.它在3.x中返回一个生成器,所以它没有那么多帮助. (2认同)

mar*_*eau 6

您可以使用其translate()方法从字符串中删除所有不需要的字符,None对于table参数,后跟包含要为其deletechars参数删除的字符的字符串.

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

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

# [x, 3, b]
Run Code Online (Sandbox Code Playgroud)

如果您在2.6之前使用的是Python版本,则需要使用string模块的translate()函数,因为在Python 2.6之前不会添加None作为table参数传递的能力.使用它看起来像这样:

import string

print string.translate(str(lst), None, "'")
Run Code Online (Sandbox Code Playgroud)

使用该string.translate()功能也适用于2.6+,因此使用它可能更好.

  • 唉: ``lst = ["it is not", 3, 'b']`` ==> ``["it isnt", 3, b]`` 并且还有 ``lst = ['it is \'t', 3, 'b']`` (2认同)