在列表中添加空格(Python)

9

我是Python的新手,需要在一个简单问题上获得一些帮助。

我需要做的是创建一个有3个项目的列表,并在每个项目前后添加空格。

例如:l1 = ['a', 'bb', 'c']
应该被转换为:[' a ',' bb ',' c ']

我在尝试编写以下内容:

lst = ['a', 'bb', 'c']
for a in lst:
    print '  a  '

…针对其他元素依此类推,但我遇到了语法错误。 有人能建议我一种可行的方法吗?谢谢。

7个回答

14

像往常一样,使用列表推导式


As always, use a list comprehension.
lst = [' {0} '.format(elem) for elem in lst]

对每个元素应用了一个 字符串格式化操作,并添加了空格。如果您使用的是Python 2.7或更高版本,则甚至可以省略替换字段中的0(花括号)。


7
[ ' {} '.format(x) for x in lst ]

针对 Python 3.6+ 版本,可以使用 f-strings 来代替,详见文档:https://www.python.org/dev/peps/pep-0498/

以上示例可改为:

[ f' {x} ' for x in lst ]

这将会给你一个 ValueError: zero length field name in format 的错误。 - Burhan Khalid
@BurhanKhalid:不会的,在我尝试过的Python 2.7中也不行。 - Martijn Pieters
@BurhanKhalid <2.7,是的。将其改为“{0}”。在2.7之前,自动编号项目是不可能的。 - Gareth Latty
' {0} '.format(x) 可在所有支持 .format() 的版本中使用,因此是更好的答案。 - Burhan Khalid

2
lst = ['a', 'bb', 'c']  
lst = [' ' + x + ' ' for x in lst]

1
In [44]: l1 = ['a', 'bb', 'c']

In [45]: [' %s '%x for x in l1]
Out[45]: [' a ', ' bb ', ' c ']

1

首先要缩进你的Python代码! 然后:

lst = ['a', 'b', 'c']
lst2 = [' ' + a + ' ' for a in lst]
print lst2

2
最好使用.format()方法,或者在紧急情况下使用%字符串格式化运算符,而不是连接字符串。这样更加高效。 - Martijn Pieters
这对我输入的每个字符串都完美地起作用了,非常感谢! - test123

0

试试这个:

lst = [' ' + x + ' ' for x in ['a', 'bb', 'c']]

1
最好使用.format()方法,或者在紧急情况下使用%字符串格式化运算符,而不是连接字符串。这样更高效。 - Martijn Pieters
你可以将['a', 'bb', 'c']替换为任何其他字符串列表,或者用包含列表的变量(例如,你的lst)来代替。 - Anton Beloglazov
我同意,使用.format()是一种在性能方面更高效的方法。 - Anton Beloglazov

0
>>> lst = ['a', 'bb', 'c']
>>> 
>>> [' {} '.format(x) for x in lst]
[' a ', ' bb ', ' c ']
>>> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接