当前位置: 首页 > 面试题库 >

在奇数位置提取列表元素

方承弼
2023-03-14
问题内容

所以我想创建一个列表,它是一些现有列表的子列表。

例如,

L = [1, 2, 3, 4, 5, 6, 7],我想创建一个子列表li,使其li包含所有L位于奇数位置的元素。

虽然我可以做到

L = [1, 2, 3, 4, 5, 6, 7]
li = []
count = 0
for i in L:
    if count % 2 == 1:
        li.append(i)
    count += 1

但是我想知道是否还有另一种方法可以以更少的步骤高效地完成相同的工作。


问题答案:

是的你可以:

l = L[1::2]

这就是全部。结果将包含放置在以下位置的元素(0基于-,因此第一个元素在position 0,第二个元素在1etc):

1, 3, 5

因此结果(实际数字)将为:

2, 4, 6

说明

[1::2]在年底只是为了列表切片的符号。通常采用以下形式:

some_list[start:stop:step]

如果省略start,将使用默认值(0)。因此,将选择第一个元素(位于position
0,因为索引是0基于-的)。在这种情况下,将选择第二个元素。

因为省略了第二个元素,所以使用默认值(列表的末尾)。因此,列表是 从第二个元素到最后一个元素 进行迭代

我们还提供了第三个参数(step2。这意味着将选择一个元素,将跳过下一个元素,依此类推…

因此,总结起来,在这种情况下[1::2]意味着:

  1. 取第二个元素(顺便说一句,如果从索引判断,它是一个奇数元素),
  2. 跳过一个元素(因为我们有step=2,所以我们跳过了一个元素,step=1这与默认设置相反),
  3. 接下一个元素
  4. 重复步骤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”循环中访问索引



 类似资料:
  • 问题内容: 我想做一些类似于此处NumPy数组的操作,更改不在索引列表中的值,但不完全相同。 考虑一个数组: 我知道我可以通过索引列表访问其元素,例如: 但是我还需要访问那些 不在列表中的元素。天真地,这是: 正确的方法是什么? 问题答案: In [170]: a = np.array([0.2, 5.6, 88, 12, 1.3, 6, 8.9]) In [171]: idx=[1,2,5] I

  • 问题内容: 使用Javascript,如何确定给定位置的元素?基本上,我希望编写一个函数,该函数接受两个输入参数(x和y坐标),并在参数所表示的屏幕上的位置处返回html元素。 问题答案: http://dev.w3.org/csswg/cssom-view/#dom-document- elementfrompoint http://msdn.microsoft.com/zh- CN/libra

  • 现在我想从中得到一个,它包含。 我已经试过了(并期望能奏效): 但这与任何内容都不匹配(包含null)。 (我不想更改XML语法。)

  • 问题内容: 因此,如果我有输入的整数: 我如何解析数字并获得1、2和8,并将它们分配给不同的变量? 谢谢! 问题答案: 这样做的低效方法是将整数转换为字符串,然后迭代字符串字符。 更有效的方法是:

  • 本文向大家介绍获取元素在Java ArrayList中的位置,包括了获取元素在Java ArrayList中的位置的使用技巧和注意事项,需要的朋友参考一下 可以使用方法java.util.ArrayList.indexOf()获得ArrayList中元素的位置。此方法返回指定元素首次出现的索引。如果该元素在ArrayList中不可用,则此方法返回-1。 演示此的程序如下所示- 示例 输出结果 现在

  • 问题内容: 假设我有3个列表:[‘q’,’w’],[‘a’,’s’],[‘z’,’x’]。如何从这些列表中获取可能的组合列表?所以我得到一个列表[[‘q’,’a’,’z’],[‘q’,’s’,’z’]]等。我为两个方法创建了一个方法,但对N个列表却找不到一个方法: 我发现这是由番石榴的Sets.cartesianProduct完成的。 问题答案: 您需要N个嵌套循环,这使它变得很难。 您可以使用递