鱼C论坛

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

关于列表append方法和生成式的疑惑

[复制链接]
发表于 2021-3-12 23:55:28 | 显示全部楼层 |阅读模式

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

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

x
用户输入N个字符扇,将这些字符串收集到列表中,然后去除其中重复的宇符串后输出列表。
length = int(input("请输入列表的长度:"))
my_list = []
for i in range(length):
    my_list.append(input('请输入字符串:'))
print(my_list)
new_list = []
[new_list.append(i) for i in my_list if not i in new_list]
print(new_list)

疑惑:为什么可以这么写[new_list.append(i) for i in my_list if not i in new_list],
         为什么不这么写new_list.append(i) for i in my_list if not i in new_list],
         为什么不这么写new_list = [new_list.append(i) for i in my_list if not i in new_list],
         很懵逼,求解惑!
       

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

使用道具 举报

发表于 2021-3-13 00:20:02 | 显示全部楼层
没看懂你的疑惑,
new_list = []
先写这个应该是因为后面用到了append
所以他首先得是个列表呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-13 00:29:29 | 显示全部楼层
yuedong 发表于 2021-3-13 00:20
没看懂你的疑惑,
new_list = []
先写这个应该是因为后面用到了append

我的问题是new_list = []后面的语句为什么可以这么写成问[new_list.append(i) for i in my_list if not i in new_list],为什么会有方括号,而不是在问[new_list.append(i) for i in my_list if not i in new_list]这个语句前为什么要定义new_list = []。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-13 00:56:56 | 显示全部楼层
我爱吃爆米花 发表于 2021-3-13 00:29
我的问题是new_list = []后面的语句为什么可以这么写成问[new_list.append(i) for i in my_list if not i ...

我也是在这两天才看到的,这个东西叫做列表推导式,你可以搜一下看看,元组也有类似的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-13 01:03:34 | 显示全部楼层
yuedong 发表于 2021-3-13 00:56
我也是在这两天才看到的,这个东西叫做列表推导式,你可以搜一下看看,元组也有类似的方法

我刚才又回去翻了下书籍,for表达式的语法格式:[表达式 for 循环计数器 in 可迭代对象],后面还可以加if条件分支。
比如说:mylist = [x for x in range(11) if not (x%2)]
也是可以写成这种形式mylist = [];[mylist.append(x) for x in range(11) if not (x%2)]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-13 01:08:17 | 显示全部楼层
我爱吃爆米花 发表于 2021-3-13 01:03
我刚才又回去翻了下书籍,for表达式的语法格式:[表达式 for 循环计数器 in 可迭代对象],后面还可以加if ...

嗯,我看的那本书上没写后面的if,
不过就叫列表推导式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-13 03:02:44 | 显示全部楼层
关于 “为什么会有方括号”,你可以这样理解:
方括号,代表的是“列表”,列表是 iterable(可迭代的)
于是,可以用“列表推导式”。
它说白了,其实就是 for循环遍历 “可迭代对象”内的元素,如遍历列表元素。

简单点,记得python有这样一种语法即可(其实很强大、很方便)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-13 09:03:37 | 显示全部楼层
新人同问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 07:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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