加入列表元素:Python

时间:2013-05-22 21:03:25

标签: python string list

假设我的列表为:

x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']

如何使用''.join()函数忽略换行符并获取'abcd'

5 个答案:

答案 0 :(得分:6)

''.join(c for c in x if c != '\n')

答案 1 :(得分:3)

你可以这样做:

''.join(c for c in x if c.isalpha())

这样,您可以删除\n\t和任何其他特殊字符

>>> x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']
>>> ''.join(c for c in x if c.isalpha())
'abcd'
>>> 

答案 2 :(得分:1)

您可以使用过滤器

''.join(filter(lambda a: a != '\n', x))

''.join(filter(lambda a: a.isalpha(), x))

答案 3 :(得分:0)

''.join([x.strip() for x in ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']])

答案 4 :(得分:0)

有时简单不仅简单,而且速度也快得多

x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']
''.join(x).replace('\n', '')

对于很长的列表,这似乎要快一点

''.join(x).translate(None, '\n')

以下是一些时间安排。

$ python -m timeit -s"x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']" "''.join(c for c in x if c!='\n')"
100000 loops, best of 3: 1.9 usec per loop
$ python -m timeit -s"x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']" "''.join(c for c in x if c.isalpha())"
100000 loops, best of 3: 2.29 usec per loop
$ python -m timeit -s"x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']" "''.join(filter(lambda a: a != '\n', x))"
1000000 loops, best of 3: 1.9 usec per loop
$ python -m timeit -s"x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']" "''.join(x).replace('\n','')"
1000000 loops, best of 3: 0.593 usec per loop
$ python -m timeit -s"x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']" "''.join(x).replace('\n','')"
1000000 loops, best of 3: 0.596 usec per loop