我爱吃爆米花 发表于 2021-3-12 23:55:28

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

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

print(new_list)

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

yuedong 发表于 2021-3-13 00:20:02

没看懂你的疑惑,
new_list = []
先写这个应该是因为后面用到了append
所以他首先得是个列表呀

我爱吃爆米花 发表于 2021-3-13 00:29:29

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


我的问题是new_list = []后面的语句为什么可以这么写成问,为什么会有方括号,而不是在问这个语句前为什么要定义new_list = []。

yuedong 发表于 2021-3-13 00:56:56

我爱吃爆米花 发表于 2021-3-13 00:29
我的问题是new_list = []后面的语句为什么可以这么写成问

我也是在这两天才看到的,这个东西叫做列表推导式,你可以搜一下看看,元组也有类似的方法

我爱吃爆米花 发表于 2021-3-13 01:03:34

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

我刚才又回去翻了下书籍,for表达式的语法格式:[表达式 for 循环计数器 in 可迭代对象],后面还可以加if条件分支。
比如说:mylist =
也是可以写成这种形式mylist = [];

yuedong 发表于 2021-3-13 01:08:17

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

嗯,我看的那本书上没写后面的if,
不过就叫列表推导式

阿奇_o 发表于 2021-3-13 03:02:44

关于 “为什么会有方括号”,你可以这样理解:
方括号,代表的是“列表”,列表是 iterable(可迭代的)
于是,可以用“列表推导式”。
它说白了,其实就是 for循环遍历 “可迭代对象”内的元素,如遍历列表元素。

简单点,记得python有这样一种语法即可(其实很强大、很方便)

yywwf2003 发表于 2021-3-13 09:03:37

新人同问
页: [1]
查看完整版本: 关于列表append方法和生成式的疑惑