如何解决在奇数位置提取列表元素
解
是的你可以:
l = L[1::2]
这就是全部。结果将包含放置在以下位置的元素(0
基于-,因此第一个元素在position 0
,第二个元素在1
etc):
1, 3, 5
因此结果(实际数字)将为:
2, 4, 6
说明
将[1::2]
在年底只是为了列表切片的符号。通常采用以下形式:
some_list[start:stop:step]
如果省略start
,将使用默认值(0
)。因此,将选择第一个元素(位于position0
,因为索引是0
基于-的)。在这种情况下,将选择第二个元素。
因为省略了第二个元素,所以使用默认值(列表的末尾)。因此,列表是 进行迭代 。
我们还提供了第三个参数(step
)2
。这意味着将选择一个元素,将跳过下一个元素,依此类推…
因此,总结起来,在这种情况下[1::2]
意味着:
- 取第二个元素(顺便说一句,如果从索引判断,它是一个奇数元素),
- 跳过一个元素(因为我们有
step=2
,所以我们跳过了一个元素,step=1
这与默认设置相反), - 接下一个元素
- 重复步骤2.-3。直到到达列表的末尾,
:@PreetKukreti提供了有关Python的列表切片表示法的另一种解释的链接。参见此处:解释Python的切片符号
额外功能-以取代柜台 enumerate()
在您的代码中,您显式创建并增加了计数器。在Python中,这不是必需的,因为您可以使用来枚举一些可迭代的对象enumerate()
:
for count, i in enumerate(L):
if count % 2 == 1:
l.append(i)
count = 0
for i in L:
if count % 2 == 1:
l.append(i)
count += 1
有关for
在Python中使用计数器模拟循环的更多信息:在Python“for”循环中访问索引
解决方法
所以我想创建一个列表,它是一些现有列表的子列表。
例如,
L = [1,2,3,4,5,6,7]
,我想创建一个子列表li
,使其li
包含所有L
位于奇数位置的元素。
虽然我可以做到
L = [1,7]
li = []
count = 0
for i in L:
if count % 2 == 1:
li.append(i)
count += 1
但是我想知道是否还有另一种方法可以以更少的步骤高效地完成相同的工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。