楼主: LPT
跳转到指定楼层
上一主题 下一主题
收起左侧

[学Python/Perl] 聊一些Python的坑,刷题的时候值得注意

 
🔗
xcmax123 2020-12-17 11:10:50 | 只看该作者
全局:
建议好好读一下 data structures and algorithm in python. 尤其是221页。
里面讲python里很多数据类型都是引用。a=[0]*4其实是四个引用指向同一位置。
初始化一维列表的正确方式:a=[0]*4
初始化二维列表的正确方式:a=[[0]*4 for _ in range(4)]
这个概念和赋值/copy/deepcopy的概念有关联。
回复

使用道具 举报

🔗
xcmax123 2020-12-17 11:19:27 | 只看该作者
全局:
忆桓公 发表于 2020-11-1 00:18
因为一维是对数值的复制,二维是对list的复制,所以二维要用[[0]*n for _ in range(m)]。
就像你复制a=b ...

你这样的理解也是不准确的。a=[0]*3也是公用一个[0],你看看data structure and algorithm in python 221页。里面说这样初始化合理是因为int类型不可变。你初始化之后再来个a[0] = 2, 不影响a[1]和a[2],因为,a[0]指向了新的数字2.
回复

使用道具 举报

🔗
xcmax123 2020-12-17 11:27:44 | 只看该作者
全局:

他说的可能是避免使用+连接字符串。这样子会创建很多新的匿名字符串,因为字符串是不可变类型的。推荐的做法是用list把他们保存起来,然后用 ''.join(mylist)连接。
回复

使用道具 举报

🔗
只是Leon 2020-12-17 12:52:22 | 只看该作者
全局:
xcmax123 发表于 2020-12-17 11:27
他说的可能是避免使用+连接字符串。这样子会创建很多新的匿名字符串,因为字符串是不可变类型的。推荐的 ...

我还能想到的是对list进行各种骚操作后产生一个新list,至少对我来说不那么直观,需要习惯一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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