Python-嵌套列表的推导式

列表推导式的第一个表达式可以是任何表达式,包括另外一个列表推导式。
考虑下面的3×4矩阵的示例,其被实现为长度为4的3个列表的列表:

list = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]
#下面的列表推导式将转置行和列:
new_list = [[n[i] for n in list] for i in range(4)]
print(new_list)
#输出结果:
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]


上面的例子等效于:

list = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]
li = []
for i in range(4):
    li.append([n[i] for n in list])
print(li)
#输出结果:
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

内建函数复杂的流程句,zip()函数这个更容易实现:

list = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]
list(zip(*list))
输出:
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

原文地址:https://blog.51cto.com/14113984/2431206

时间: 2024-10-09 09:13:28

Python-嵌套列表的推导式的相关文章

Python:enumerate函数、introspection对象自省、推导式(列表(list)推导式、字典(dict)推导式、集合(set)推导式)

枚举(enumerate)是Python内置函数.它允许我们遍历数据并?动计数,例如下面这样:for counter, value in enumerate(some_list): print(counter, value)不只如此,enumerate也接受?些可选参数,这使它更有?.例如:for counter, value in enumerate(some_list,1): # 指定从1开始计数 print(counter, value)还可以?来创建包含索引的元组列表. 1 # 指定索引

python中的链表推导式

python中的链表推导式 博客分类: Python Python Python代码   num=[1,2,3] myvec=[[x,x*2] for x in num] #嵌套一个链表,格式为一个数和他的平方 print myvec 生成链表很简单的一种办法就是链表推导式,不仅容易看懂,还很好用: 链表表达式在for语句前面,for后面就是对参数的限定.[XXX for yyy](必须要有方括号表示是链表),XXX表示链表,yyy限定XXX中参数. 例子: Python代码   num=[1,

python 三元运算符、推导式、递归、匿名函数、内置函数

三目运算符 # 三目(元)运算符:就是 if...else...语法糖 # 前提:简化if...else...结构,且两个分支有且只有一条语句 # 注:三元运算符的结果不一定要与条件直接性关系 cmd = input('cmd: ') print('可以转化为数字') if cmd.isdigit() else print('不可以转化为数字') a = 20 b = 30 res = a if a > b else b # 求大值 print(res) res = 'b为小值' if a >

python函数知识五 推导式和内置函数一(了解)

17.推导式: 推导式:将for循环多行变成一行 list推导式:[] #普通模式 print([i for i in range(20)]) #循环模式 #[变量 for i in range(20)] print([i+1 for i in range(10)]) #筛选模式 #[变量(加工后) for i in range(20)] print([i for i in range(20) if i % 2 == 1]) 生成器表达器:() #普通模式 print((i for i in r

Python嵌套列表去重

raw_list = [ [ 'CS_SUPP_INFO', 'A', '1'], [ 'CS_SUPP_INFO', '1', 'A'], [ 'CS_SUPP_INFO', '1', 'A'], [ 'CS_SUPP_INFO', 'A', '1'], [ 'CS_SUPP_INFO', 'A', '2'], [ 'CS_SUPP_INFO', 'A', '2'], [ 'CS_SUPP_INFO', 'A', '3'] ] # 排序,只有排序后,下面用集合去重才能排除子列表中子元素顺序的影

python的各种推导式(列表推导式、字典推导式、集合推导式)

推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2和3中都有支持: 列表(list)推导式 字典(dict)推导式 集合(set)推导式 一.列表推导式 1.使用[]生成list 基本格式 variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res: 列表生成元素表达式,可以是有返

Python之推导式、生成器表达式

l = [i for i in range(10)] print(l) l1 = ['选项%s'%i for i in range(10)] print(l1) 1.把列表解析的[]换成()得到的就是生成器表达式 2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存 3.Python不但使用迭代器协议,让for循环变得更加通用.大部分内置函数,也是使用迭代器协议访问对象的.例如, sum函数是Python的内置函数,该函数使用迭代器协议访问对象,而生成器实现了迭代器协议

Python—推导式

推导式 推导式:comprehensions(又称解析式),是Python的一种独有特性,相当于语法糖的存在,推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2和3中都有支持: 列表(list)推导式 集合(set)推导式 字典(dict)推导式 列表推导式 randint 基本格式: 变量名 = [expression1 for variable in sequence[, if expression2]] expression1 : 列表生成元素表达式

Python——生成器&推导式

生成器 生成器的本质就是迭代器,那么还为什么有生成器呢,两者唯一的不同就是迭代器都是Python给你提供能够的已经写好的工具或者通过数据转化得来的.而生成器是需要我们自己用Python代码构建的工具. 生成器的构建方式: 在python中有两种方式来创建生成器: 通过生成器函数 通过生成器推导式 生成器函数: 首先我们来一个简单的函数结构: def func(): print('111') return 222 result = func() print(result) 没得问题,那么在看看生成