首页 > 技术文章 > python3进阶之推导式2之嵌套列表(list)推导式(comprehensions)

max520liuhu 2018-04-21 14:19 原文

嵌套列表式,列表中含列表
示例1:

# 考虑以下的 3x4 矩阵,如果你想交换行和列,可以用嵌套的列表推导式:
m1= [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],]
# 思路:先取每行首位,然后增加列的位置
m1=[[row[i] for row in m1] for i in range(4)]
print(m1)
# [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]


示例2:

mam = [('x',['open1','open1','open1']),('y',['open1','open1','open0']),('z',['open0','open0','open0'])]

def find(c):
# 元组中列表C中的字符串i,遍历i中的字母j,判断j是否为数字,若是则输出
return [j for i in c for j in i if j.isdigit()]

na=[w for w, c in mam if find(c) == ['0', '0', '0']]
print(na)

示例3:
# 嵌套列表,找出含有字母“u”两个以上的
names = [['tom','billy','liubuqun','andrew','liuxiao','steven','liuhu'],['xiaoyunna','xiaoyunwang','xiaoyunyun','sherry','eva']]

list10=[name for ls in names for name in ls if name.count('u')>=2]
print(list10)
# ['liubuqun', 'liuhu', 'xiaoyunyun']


# for语句实现代码:
t = []
for li in names:
for name in li:
if name.count('u') >= 2:
t.append(name)
print(t)
# ['liubuqun', 'liuhu', 'xiaoyunyun']

推荐阅读