吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2008|回复: 16
收起左侧

[Python 转载] 【笔记】python解疑和反思

  [复制链接]
隐而远外 发表于 2020-8-10 21:14
本帖最后由 隐而远外 于 2020-8-11 18:16 编辑

如题所示,今天我要发一些这些天学习python时遇到的问题以及解答它的过程。

疑惑来源

学到数据类型之集合时我看到视频里的老师这样来创建一个集合:

b=set([11,22,33,'zhangsan'])

我对中括号很是疑惑,为什么要加中括号?不加会怎样?于是我很皮的在sublime 中写下了如下:

b=set(11,22,'zhangsan')

然后运行它,果不其然报错了

    b=set(11,22,'zhangsan')
TypeError: set expected at most 1 argument, got3

这是为什么?

解疑过程

我想不出答案,于是直接ctrl+c,ctrl+v进浏览器里搜,终于在CSDN社区找到了和我有类似疑惑的人不过他的疑惑不是set()而是list(),他的问题大概是这样的:

ty=list(1,2,3,4,5,6)
TypeError: list expected at most 1 argument, got6

看到这我就激动了,我们两个的问题不就相当于是一样的嘛!然后我看到了他的解答是这样说的:

list()里面至多有一个元素!

这就解释了报错里面为什么反复出现:at most这样的词,然后他的解决办法是这样的:

ty=list((1,2,3,4,5,6))
print(ty)

他把list()里面的数据变成了一个元组,这样打印出来就是一个列表!亲测过!

之后我又搜索python,list ()得到了这样一句话:

list()方法用于将元组转换为列表。

到此我终于明白了list()的根源用法了!

set()函数可以创建一个无序不重复的元素集,这个函数至多可以传一个参数。

于是我老老实实的按照老师的方法,加上中括号运行,这次当然是可以的~~

那是不是就意味着:set()方法可以把列表转换为集合?这有待大家讨论。

反思

写到这里大家可能对我说的有些不知所云,没关系,可能你只是没接触过,一旦学习了,相信会比我学的还好。

其是这有些“无心插柳柳成荫”了,写到这里,我又想到了论坛网友的评论了:“那个用list和用“[]”产生的列表好像不一样,”我不知道这里的“不一样”是不是对应了上面的分析,如果是的那就太好了。

今天就到这里了,我今天现学了Markdown 不知道效果如何,第一天用发出来看看哈哈哈

还是那句话“用心讨论,共获提升!”希望大家每天进步!


Snipaste_2020-08-11_18-13-56.png


免费评分

参与人数 4吾爱币 +4 热心值 +1 收起 理由
m1n9yu3 + 1 用心讨论,共获提升!
sky1209 + 1 用心讨论,共获提升!
Zeaf + 1 + 1 用心讨论,共获提升!
Ldfd + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 隐而远外 发表于 2020-8-11 10:59
本帖最后由 隐而远外 于 2020-8-11 13:49 编辑

抛出问题

问题

问题

分析问题

callable()是python的内置函数,用来检查对象是否可被调用,可被调用是指对象能否使用()括号的方法调用

在如上的代码中,由于变量list和函数list重名了,所以函数在使用list函数时发现list是一个定义好的列表,而列表是不能被调用的,因此出现错误。

解决办法:

我们只需要修改变量名list 就可以了。

解决

解决

总结

在变量名的命名时一定要注意,应避免和python的关键字,函数名冲突。

创建列表时,尽量不用list=[]这种形式,用a,b,c... 什么的更好。如果非要用,尽量写成list1,list2,list3...

好了,关于list()的讨论就到这里。

list总结之终极版

创建空list

list1 = []  (这里的list1可以换成其它变量,只要不与python的函数名,关键字冲突就行)

list2 = list()   (这里的list2也是一样的)

创建并初始化list

list1 = ['a','b','c',123] #比较常用,类型可以不一致

list2 = list(list1) #这里的list传入的是可迭代对象,切记对象只可传一个参数,上面已经讨论过了,可传参数如set,tuple,generator


问题解决了的感觉真好~~
@13832811375
 楼主| 隐而远外 发表于 2020-8-16 15:07
q19348 发表于 2020-8-14 01:39
这段难道不是list作为变量接收一个列表吗?
内置函数不能作为变量名??

现在才回复不好意思啊,不是list不可以做为变量名,而是它容易和函数名list()起冲突,单独创建一个列表可以用list=这种形式,但如果遇到既要创建列表,又要用到list函数时,尽量不要把变量名写成“list=”这种形式容易出现报错,还是不懂的话可以看看这篇帖子的推荐楼,那里面写的还算清楚吧。
Ldfd 发表于 2020-8-10 21:37
哈哈哈好沙雕的感觉
set()是方法
[]是数据类型
 楼主| 隐而远外 发表于 2020-8-10 21:48
Ldfd 发表于 2020-8-10 21:37
哈哈哈好沙雕的感觉
set()是方法
[]是数据类型

活捉大佬一枚!你是我遇到的第三个有个博客的人,好厉害好厉害,感觉能写博客的都是牛人~~我也感觉自己有点傻哈哈,傻了有十几年了
Ldfd 发表于 2020-8-10 21:49
隐而远外 发表于 2020-8-10 21:48
活捉大佬一枚!你是我遇到的第三个有个博客的人,好厉害好厉害,感觉能写博客的都是牛人~~我也感觉自己有 ...

纯小白Orz
博客现在搞得很无脑的,基本就是照着教程,只要想做一定能搞出来,现成的资源很多
wuyangteam 发表于 2020-8-10 21:57
本帖最后由 wuyangteam 于 2020-8-10 22:12 编辑

我的理解是list(l)就相当于带有一个参数的构造函数,所以你可以传字典对象,列表对象,元祖对象,复杂对象列表等等.
sendpix1.jpg
sendpix2.jpg
源码:
sendpix4.jpg
sendpix3.jpg
 楼主| 隐而远外 发表于 2020-8-10 22:12
wuyangteam 发表于 2020-8-10 21:57
我的理解是list(l)就相当于带有一个参数的构造函数,所以你可以传字典对象,列表对象,元祖对象,复杂对象列表 ...

对对对,list只能含一个参数是前提,然后这一个参数可以是元组,集合,列表还有你写的那个test,但无论是元组还是集合还是其它的最后都会被list给转化为列表,是这样理解的不?
wuyangteam 发表于 2020-8-10 22:16
隐而远外 发表于 2020-8-10 22:12
对对对,list只能含一个参数是前提,然后这一个参数可以是元组,集合,列表还有你写的那个test,但无论是 ...

对的,最终会被转为list,因为list()就是用来构造列表的.
我发现吾爱的这个编辑,好难用哦,
sky1209 发表于 2020-8-11 00:37
虽然一直在尝试着学习,但一直学不进去,估计还是没有动力 。努力,加油,给自己打气,向楼主 学习!
aa吴所谓 发表于 2020-8-11 06:31
学到了学到了。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 02:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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