先来看最C的方法
>>>alist = [[1,2,3],[4,5,6],[7,8,9]]
>>> res = []
>>> for i in alist:
for j in i:
res.append(j)
>>> res
[1, 2, 3, 4, 5, 6, 7, 8, 9]
这个操作可以用列表推导式来生成,如下
>>>alist = [[1,2,3],[4,5,6],[7,8,9]]
>>> [j for i in alist for j in i]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
瞬间爽了很多~~
此列表推导式的格式就是:
[①以什么为列表元素,需要对这个元素进行什么处理 ②遍历获取这个元素 ③条件判断]
先看一个最low的:-)
这个就是直接实现列表相加而已。
>>>list = [[1,2,3],[4,5,6],[7,8,9]]
>>> x = []
>>> for row in alist:
x += row
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9]
这个也可以写成
>>>list = [[1,2,3],[4,5,6],[7,8,9]]
>>> x = []
>>> for row in alist:
x += [*row]# 解包在转化为列表。。。
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9]
最后来一种最优雅的方式,使用内置函数sum()
alist = [[1,2,3],[4,5,6],[7,8,9]]
>>> sum(alist, [])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
这个方法的原理是使用sum函数,sum(iter,start),start指的就是要计算的起始值,此处为空列表。值得注意的是,虽然字符串是可迭代的,但是sum函数不能执行字符串之间的相加。我们都是到 ‘abc’ + ‘def’ = 'abcdef’但是这货不可以这样操作,如下
>>> _list = ['abc', 'def']
>>> sum(_list)
Traceback (most recent call last):
File "" , line 1, in <module>
sum(_list)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
这个操作一般用’’.join(iter)来实现。