python列表推导式生成随机数_python列表推导式

列表推导式介绍

列表推导式是Python中快速创建列表的一种方式。

之前我们要创建(Python3中)一个元素是0~9的列表,我们可能会像下面这么写:

>>> list(range(10))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

复制代码

这么写没毛病,但是如果要稍微复杂一点的需求可能就有点棘手了,比如:

把列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]中的每个元素都加100,生成一个新列表,这要怎么写呢?

一级学徒可能会这么写:

>>> list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> list2 = []

>>> for i in list1:

... list2.append(i+100)

...

>>> list2

[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]

复制代码二级学徒可能会这么写:

>>> list2 = list(map(lambda i:i+100, list1))

>>> list2

[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]

复制代码

注意: Python3中map函数返回的是一个迭代器,需要转成list类型。

高级学徒可能会这么写:

>>> list2 = [i+100 for i in list1]

>>> list2

[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]

复制代码

好啦,这第三种写法就是今天我们要讲的列表推导式。

接下来我们看一下,列表推导式的语法规范是什么,看下图:

列表推导式练习

只有输出表达式和输入序列的基本列表推导式

>>> list1 = [1, 2, 3]

>>> [x*10 for x in list1] # 把list1中的每个元素乘以10

[10, 20, 30]

复制代码

带有条件判断的列表推导式

>>> list1 = [1, 2, 3]

>>> [x*10 for x in list1 if x%2!=0] # 把list1中的每个不能被2整除的元素乘以10

[10, 30]

复制代码

多个输入序列的列表推导式

>>> list1 = ["A", "B", "C"]

>>> list2 = ["X", "Y", "Z"]

>>> [x+y for x in list1 for y in list2] # 把list1和list2中的元素进行拼接

['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

复制代码

注意:使用列表推导式生成的列表虽然十分方便,但是它生成的列表的所有元素会直接在内存中生成,当你要生成的列表元素个数十分巨大的时候,要注意小心你的内存。

  • 0
    点赞
  • 1
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值