【问题标题】:python lists: print values which have an even indexpython列表:打印具有偶数索引的值
【发布时间】:2020-11-30 11:55:51
【问题描述】:

我需要定义存储在输入获取的列表中的值的索引。然后我需要返回具有偶数索引的值。 到目前为止,我有部分代码,但我认为缺少一些东西。我的程序也继续运行并且不会中断。 我不明白为什么,我试图对其进行中断,但它一直给我错误。

如果输入是“5 4 3 2 1” 输出应该是“5 3 1”

getal = ""
reeks = []

reeks = input("Geef een reeks getallen in : ")    

getallen_reeks = [int(getal) for getal in reeks.split(" ")]

for getal in getallen_reeks:

    getallen_reeks.append(getal)
    if getallen_reeks.index(getal)%2 == 0:
        print(getal) ```

【问题讨论】:

    标签: python list indexing


    【解决方案1】:

    您可以使用enumerate(list)。喜欢,

    getal = ""
    reeks = []
    
    reeks = input("Geef een reeks getallen in : ")
    
    getallen_reeks = [int(getal) for getal in reeks.split(" ")]
    
    for idx, getal in enumerate(getallen_reeks):
        if idx % 2 == 0:
            print(getal)
    

    根据您的输入进行测试

    Geef een reeks getallen in : 5 4 3 2 1
    5
    3
    1
    

    【讨论】:

      【解决方案2】:

      你不需要循环。使用列表切片:

      >>> l = '5 4 3 2 1'
      >>> l[::2]
      '54321'
      

      糟糕,我忘记拆分值了!

      >>> l = l.split(" ")
      >>> l
      ['5', '4', '3', '2', '1']
      >>> l[::2]
      ['5', '3', '1']
      >>> 
      

      l[::2] 获取列表中的每个第二个元素,从第一个(第零个)元素开始

      【讨论】:

        【解决方案3】:

        因为您再次将内容添加回父列表

        所以列表不断增长:

        删除:

        getallen_reeks.append(getal)
        

        这将永远阻止它运行循环:

        正确的做法是:

        getal = ""
        reeks = []
        reeks = input("Geef een reeks getallen in : ")
        getallen_reeks = [int(getal) for getal in reeks.split(" ")]
        [print(getallen_reeks[n]) for n in range(0,len(getallen_reeks),2)]
        

        你可以使用 range 或 enumerate 来减少开销操作:

        输出:

        【讨论】:

        • 使用.index... 仍然是非常低效和潜在的错误来源...
        • @deceze 同意添加回答
        • 1) 您可以使用range(0, len(getallen_reeks), 2) 简化该方法。 2) 不要使用列表推导来代替for
        猜你喜欢
        • 2020-01-07
        • 1970-01-01
        • 1970-01-01
        • 2019-11-12
        • 2020-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多