前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python之cookbook-day0

python之cookbook-day0

作者头像
py3study
发布2020-01-17 12:38:39
4350
发布2020-01-17 12:38:39
举报
文章被收录于专栏:python3

第一章:数据结构和算法

1.2 解压可迭代对象赋值给多个变量

问题:

如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError 。那么 怎样才能从这个可迭代对象中解压出 N 个元素出来?

解决方案:

Python 的星号表达式可以用来解决这个问题。

>>> record = ('hotskyi', 'hotskyi@example.com', '773-555-1212', '847-555-1212') >>> name, email, *phone_numbers = record >>> name 'hotskyi' >>> email 'hotskyi@example.com' >>> phone_numbers ['773-555-1212', '847-555-1212']

#星号表达式也能用在列表的开始部分。当然,这种方法可以很容易的将它分割成前后两部分。

>>> *trailing, current = [10, 8, 7, 1, 9, 5, 10, 3] >>> trailing [10, 8, 7, 1, 9, 5, 10] >>> current 3

#星号解压语法在字符串操作的时候也会很有用,比如字符串的分割。

>>> line = 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false' >>> uname, *fields, homedir, sh = line.split(':') >>> uname 'nobody' >>> homedir '/var/empty' >>> sh '/usr/bin/false' >>> fields ['*', '-2', '-2', 'Unprivileged User']

#有时候,你想解压一些元素后丢弃它们,你不能简单就使用 * ,但是你可以使用一个普通的废弃名称,比如 _ 或者 ign (ignore)。

>>> record = ('hotskyi', 50, 123.45, (01, 30, 2019)) >>> name, *_, (*_, year) = record >>> name 'hotskyi' >>> year 2019 >>>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档