前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python列表推导式(1)_Python自学第二十三节

Python列表推导式(1)_Python自学第二十三节

作者头像
张旭博客
发布2022-12-27 14:49:07
6300
发布2022-12-27 14:49:07
举报
文章被收录于专栏:zxbk
  • 列表推导式,也叫列表解析式,可以使用非常简洁的方式来快速生成满足特定需求的列表,属于非原地操作。
  • [表达式 for 变量 in 序列或可迭代对象if条件表达式]
  • 如下示例,得到‘hello’每个字符的ASCII码值,并存放到列表中
代码语言:javascript
复制
---以前使用for循环的方法:
>>> a = []
>>> for i in 'hello':
...     a.append(ord(i))
>>> a
[104, 101, 108, 108, 111]

---列表推导式方法:
>>> [ord(i) for i in 'hello']  # i来自for i in 'hello'的循环,ord处理每次循环的结果
[104, 101, 108, 108, 111]

---若把结果在转换成字符:
>>> a = [ord(i) for i in 'hello']   #非原地操作,把上一步得到的结果赋值给a
>>> [chr(i) for i in a]   #a得到A
['h', 'e', 'l', 'l', 'o']
---若把上一步的结果输出为字符串:
>>> ''.join([chr(i) for i in a])   #join方法把列表转换成字符串
'hello'

如果列表中很多元素首尾存在空格,可以使用列表推导式配合 strip() 方法快速去除这些空格。

代码语言:javascript
复制
>>> a = ['   hello   ','   python','nihao   ']
>>> a
['   hello   ', '   python', 'nihao   ']
>>> [i.strip() for i in a]
['hello', 'python', 'nihao']

如把数值型转换成文本型,可以使用列表推导式配合 str() 方法快速进行转换。

代码语言:javascript
复制
>>> [ i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [str(i) for i in range(10)]
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

练习:

阿凡提和国王下棋,阿凡提赢了,他让国王赏给他一些米。棋盘一共有64个格子,第一个格子放1粒米,第二个格子放2粒米,第3个格子放4粒米,也就是2的n-1次方。那么阿凡提最后一共能得到多少米? 第64格也就是2的63次方

代码语言:javascript
复制
>>> [2**i for i in range(64)]  #每个格子的数量如下
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, 2147483648, 4294967296, 8589934592, 17179869184, 34359738368, 68719476736, 137438953472, 274877906944, 549755813888, 1099511627776, 2199023255552, 4398046511104, 8796093022208, 17592186044416, 35184372088832, 70368744177664, 140737488355328, 281474976710656, 562949953421312, 1125899906842624, 2251799813685248, 4503599627370496, 9007199254740992, 18014398509481984, 36028797018963968, 72057594037927936, 144115188075855872, 288230376151711744, 576460752303423488, 1152921504606846976, 2305843009213693952, 4611686018427387904, 9223372036854775808]
>>> sum([2**i for i in range(64)])   #使用sum函数把值相加即为最后的结果
18446744073709551615
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 练习:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档