首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python 3中定期选择列表元素

在Python 3中定期选择列表元素
EN

Stack Overflow用户
提问于 2013-06-24 17:23:34
回答 2查看 3K关注 0票数 1

假设我有一份名单

代码语言:javascript
复制
Q = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

我相信我可以使用扩展的切片表示法提取第一个和第九个值:

代码语言:javascript
复制
Q[::9]

它应给予:

代码语言:javascript
复制
[0,9,18]

但是,除了这些元素之外,我如何同样地选择所有元素呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-24 17:25:19

你是说这个?

代码语言:javascript
复制
>>> lis = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
>>> lis[1::9]
[1, 10]

扩展切片符号:

代码语言:javascript
复制
lis[start : stop : step]  #default values : start = 0, stop = len(lis), step = 1

您可以为start传递自己的值(默认情况下使用0)

更新:

代码语言:javascript
复制
>>> lis = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
>>> se = set(range(0, len(lis),9))   #use a list if the lis is not huge.
>>> [x for i,x in enumerate(lis) if i not in se]
[1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17]

#for your example even this will work:
>>> [x for i,x in enumerate(lis) if i%9 != 0]
[1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17]
票数 4
EN

Stack Overflow用户

发布于 2013-06-24 18:52:12

如果没有重复的数字,这是任何数字集合(不一定是连续的)的通用解决方案:

代码语言:javascript
复制
>>> Q = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
>>> list(set(Q).difference(Q[::9]))
[1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17]
>>> 

它使用set.differences获取要删除的原始列表和子列表之间的set

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17281356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档