连接列表元素:Python

连接列表元素:Python,python,string,list,Python,String,List,假设我的列表如下所示: x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd'] 如何使用.join函数忽略换行符并获取“abcd”?您可以执行以下操作: ''.join(c for c in x if c.isalpha()) 这样,您可以删除\n、\t和任何其他特殊字符 >>> x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd'] >>> ''.join(c for c

假设我的列表如下所示:

x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']
如何使用.join函数忽略换行符并获取“abcd”?

您可以执行以下操作:

''.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'
>>> 
你可以做:

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

你可以用过滤器

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


你可以用过滤器

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


有时候简单不仅仅是简单,它也快得多

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

有时候简单不仅仅是简单,它也快得多

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

.joinfilter'\n.\u\n,x@YannVernier,这几乎和之后做替换一样快。0.769对0.596。joinfilter'\n',x@YannVernier,这几乎和之后做替换一样快。0.769 vs 0.596这可以在Python 2.7中使用吗?这也将删除数字和标点符号。当然,对于OP来说,这可能很好。这可以在Python2.7中使用吗?这也将删除数字和标点符号。当然,对于OP来说,这可能很好。你好。我认为,如果notc为'\n',则x中c的.joinc可能比如果c!='则x中c的.joinc快\不。但结果是“a\nb\nc\n\nd”,我不明白为什么。你会比我更聪明吗?我很困惑,第一次输入时有一个错误:必须是c!='\不是为x\n'@eyquem,有趣的是,它现在的速度与过滤器相同+lambda@eyquem,字符串是不可变的,但并非所有相同的字符串都必须具有相同的id。除此之外,Python允许您说如果c不是“\n”,这更易于阅读,但有相同的问题不是所有相同的字符串都必须具有相同的id我对这一断言感到惊讶,我想知道更多。问题是,如果在['a','\n','b']中运行c的代码:print reprc,而不是c是'\n',您会得到一个'True',\n'False',b'True,但是在['a','\n','b'中为c运行repr.joinc,如果notc是'\n','b'],则会给出'a\nb Hello'。我认为,如果notc为'\n',则x中c的.joinc可能比如果c!='则x中c的.joinc快\不。但结果是“a\nb\nc\n\nd”,我不明白为什么。你会比我更聪明吗?我很困惑,第一次输入时有一个错误:必须是c!='\不是为x\n'@eyquem,有趣的是,它现在的速度与过滤器相同+lambda@eyquem,字符串是不可变的,但并非所有相同的字符串都必须具有相同的id。除此之外,Python允许您说如果c不是“\n”,这更易于阅读,但有相同的问题不是所有相同的字符串都必须具有相同的id我对这一断言感到惊讶,我想知道更多。问题是,如果您在['a','\n','b']中运行c的代码:print reprc,而不是c是'\n',您会得到'True',\n'False',b'True,但是,['a','\n','b'中的repr.joinc对于c,如果notc是'\n','b'],则会得到'a\nb'