鱼C论坛

 找回密码
 立即注册
查看: 2187|回复: 7

[已解决]list_a=[i i for range(5)]是什么写法?为何可以这样写?

[复制链接]
发表于 2021-4-2 19:06:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天看到一种写法从来没见过:
genre_listings=[index for index in range(5)]
感觉简洁又好用,我的问题是:
1.为什么可以这样写?
2.工作原理是啥?
最佳答案
2021-4-2 20:36:10
本帖最后由 11点要睡觉 于 2021-4-2 20:37 编辑

不就是python零基础的第十二课的作业题第五题

>>> [ i*i for i in range(10) ]

>>> [i*i for i in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  
列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:
  
[有关A的表达式 for A in B]
  
例如
>>> list1 = [x**2 for x in range(10)]
>>> list1
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

相当于
list1 = []
for x in range(10):
    list1.append(x**2)


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-2 19:10:24 | 显示全部楼层
本帖最后由 柿子饼同学 于 2021-4-2 19:21 编辑

这是列表推导式,就是可以这么用
和这个是一样的
for index in range(5):
    genre_listings.append(index)
不过这之前要创建一个叫genre_listings的列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-2 19:31:42 From FishC Mobile | 显示全部楼层
这是python所特有的语法,没有为啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-2 20:03:05 | 显示全部楼层
列表推导式,后面还会有一些其他的推导式。这个适合写一些逻辑比较简单的语句,逻辑太复杂的不好写,别人也不好查看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-2 20:36:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 11点要睡觉 于 2021-4-2 20:37 编辑

不就是python零基础的第十二课的作业题第五题

>>> [ i*i for i in range(10) ]

>>> [i*i for i in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  
列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:
  
[有关A的表达式 for A in B]
  
例如
>>> list1 = [x**2 for x in range(10)]
>>> list1
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

相当于
list1 = []
for x in range(10):
    list1.append(x**2)


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-3 08:29:37 | 显示全部楼层
python解析表达式,这也是这两天刚搞明白的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-4 13:50:36 | 显示全部楼层
列表推导式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 10:45:20 | 显示全部楼层
列表推导式,用法如下
List = [exp1 if condition else exp2 for x in data]
迭代可以支持双层,包含两个表达式。
例1>>>List = [ x if x%2 else x+1 for x in rang(10) ]
扩展开后就是这样
List = []
for x in range(10):
    if x%2: List.append(x)
    else:  List.append(x+1)
例1>>>List = List = [ x if x%2 else x+1 for x in rang(A) for A in rang(10) ]
List = []
for A in range(10):
    for x in rang(A):
       if x%2: List.append(x)
       else:  List.append(x+1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 04:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表