【问题标题】:Extracting elements from a python list [closed]从python列表中提取元素[关闭]
【发布时间】:2020-10-19 06:13:21
【问题描述】:

我想要 q_odd 列表中 p 的奇数索引元素和 q_even 列表中 p 的偶数索引元素。

p = [4, 8, 7,19,23,78,67,37,3783,4]

q_odd = []  
    
q_even = []

结果是:

q_odd = [8,19,78,37,4]
    
q_even = [4,7,23,67,3783]

【问题讨论】:

  • 你试过什么?
  • 我正在尝试使用 if else 语句进行 for 循环,但无法正确应用
  • 这给了我们奇数元素值,我们想要奇数索引的元素@hiroprotagonist

标签: python python-3.x list jupyter-notebook


【解决方案1】:

你可以使用list-slicing:

q_odd = p[1::2]
q_even = p[::2]

p[start:stop:step] 从给定列表p 创建一个新列表。使用step=2,您将获取所有其他元素,start=0(默认为0,因此甚至不需要编写它-您只需编写p[::2])将为您提供具有偶数索引的元素; start=1 奇数索引。

【讨论】:

    【解决方案2】:

    解决方案:
    这应该可以解决您的问题陈述:

    p = [4, 8, 7,19,23,78,67,37,3783,4]
    q_even, q_odd = [], []
    
    # METHOD 1 : using continue with if condition for data processing
    for idx, num in enumerate(p):
        if idx % 2 == 0:
            q_even.append(num)
            continue
        q_odd.append(num)
    
    # METHOD 2 : Using if-else statement for data processing
    for idx, num in enumerate(p):
        if idx % 2 == 0:
            q_even.append(num)
        else:
            q_odd.append(num)
    
    # Method 3: using list-slicing : as explained by '@hiro protagonist'
    q_odd = p[1::2]
    q_even = p[::2]
    
    print(q_odd)
    print(q_even)
    

    输出:

    [8, 19, 78, 37, 4]
    [4, 7, 23, 67, 3783]
    

    注意:一次只能使用一种方法

    【讨论】:

    • 或在if .. else 块内。
    • 使用 if-else 语句更新了代码。看一看。它会很好地工作。
    【解决方案3】:
    for i in range(len(p)):
        if i % 2 == 0:
            q_even.append(p[i])
        else:
            q_odd.append(p[i])
    

    【讨论】:

    • 这给了我们索引值,比如不是元素值,结果得到了 q_even= [0,2,4,6,8] 想要的结果 - q_even= [4,7,23,67,3783 ]
    • 这给了我们索引值,比如不是元素值,结果得到了 q_even= [0,2,4,6,8] 想要的结果 - q_even= [4,7,23,67,3783 ] @divyessh
    • 检查一下,现在它可以工作了
    • 是的,现在可以使用了,谢谢哥们
    • @Andrew 这是一种非常非 Python 的方式。请参阅 hiro 主角的答案以获得更好的方法。
    【解决方案4】:
    p = [4, 8, 7,19,23,78,67,37,3783,4]
    q_even = [p[i] for i in range(len(p)) if i%2 == 0]  
    print(q_even)
    q_odd = [p[i] for i in range(len(p)) if i%2 != 0]
    print(q_odd)
    # Have used list comprehension.
    

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 2020-02-08
      • 1970-01-01
      • 2013-08-21
      • 2021-10-14
      相关资源
      最近更新 更多