python - 单词和字母列表到字母列表

标签 python list

我有一个列表,其中包含长度为 1n 的字符串:

a = ['a','aq','thw','z']

我试图获得一个只有长度 1 元素的平面列表,扩展那些长度大于 1 的元素。我目前的解决方案是:

l = []
for i in a:
    l = l + list(i)
print(l)
['a', 'a', 'q', 't', 'h', 'w', 'z']

是否有更直接的方法来避免 for 循环?

我的印象是可能没有,但是我很好奇在哪里知道是否有其他更有效的内置方法来完成此操作。提前致谢。

最佳答案

这是我能想到的最简单的方法,使用 str.join + listification。

>>> list(''.join(a))
['a', 'a', 'q', 't', 'h', 'w', 'z']

还有chain的解决方案:

>>> from itertools import chain
>>> list(chain.from_iterable(a)) # Thanks, @Patrick Haugh!
['a', 'a', 'q', 't', 'h', 'w', 'z']

它们都非常快。

a2 = a * 100000
%timeit list(''.join(a2))
%timeit list(chain.from_iterable(a2))
%timeit [letter for word in a2 for letter in word]

11.1 ms ± 247 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
32.3 ms ± 863 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
50.2 ms ± 1.3 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

关于python - 单词和字母列表到字母列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53782516/

相关文章:

python - 报库中的发布日期总是返回无

python - 使用 Python 抓取 Google - requests.get 的正确 URL 是什么?

python pandas-可以使用where(max())比较相同形状的3个dfs?这是一个掩蔽问题吗?

list - 在 Prolog 中使用列表列表

java - 大列表 FlatMap Java Spark

python - 使用python用分隔符分割字符串,同时忽略引号内的分隔符和转义引号

Python正则表达式问题

c# - 如何自动初始化一个数字递增的列表?

c# - 检查值是否是 C# 中一组值中的一个的最简单方法?

r - Pander+Knitr : Error when using pander. 列表问题