【问题标题】:Creating 2 arrays from one array in python在python中从一个数组创建2个数组
【发布时间】:2016-04-26 18:02:57
【问题描述】:

我是来自 Java 背景的 python 新手,我正在尝试从一个数组创建两个数组,其中奇数索引放在一个数组中,偶数索引放在另一个数组中。

数组一将包含索引(0,2,4,6,8 等) 数组二将包含索引(1,3,5,7,9 等)

我目前的实现是:

for i in range (0, len(originalArray) - 1):  
    if i % 2 == 0:
        Array1.append(originalArray[i])

    if i % 2 == 1:
        Array2.append(originalArray[i])

if len(originalArray) % 2 == 0:
    Array1.append(originalArray[-1])

有人能推荐一个更好的方法吗? 谢谢。

【问题讨论】:

    标签: python arrays if-statement for-loop


    【解决方案1】:

    假设您的列表名为a

    part1 = a[::2]
    part2 = a[1::2]
    

    结果:

    >>> a = [1, 2, 3, 4, 5, 6]
    >>> a[::2]
    [1, 3, 5]
    >>> a[1::2]
    [2, 4, 6]
    

    python 中的切片语法是list[start:end:step]。使用list[::2],我们从列表中获取每个第二个元素(偶数)。为了获得奇数元素,我们将一个添加到列表起始索引,因此使用list[1::2]

    更详细的解释可以在这里找到:python list slices

    【讨论】:

    • 谢谢,不过,我并不是要从两个数组中创建一个数组。反之亦然。
    • 呃,抱歉,更新问题
    • 更新了答案以反映您的问题
    • 这是完美的。你能解释一下冒号发生了什么吗?我对python很陌生。谢谢
    • 添加了更多解释:)
    【解决方案2】:

    另一种选择,不像 Python 那样,但我在可读性方面犯了错误:

    Array1 = []
    Array2 = []
    tmp_array = [Array1, Array2]
    for i in xrange(len(originalArray)):
        tmp_array[i % 2].append(originalArray[i])
    

    【讨论】:

      【解决方案3】:
      for element in originalArray:
          if originalArray.index(element) % 2 = 0:
              Array1.append(element)
          else:
              Array2.append(element)
      

      【讨论】:

        【解决方案4】:

        试试这个:

        original_list = [1,2,3,4,5,6,7,8]
        first_list = original_list[0::2]
        second_list = original_list[1::2]
        

        结果是:

        first_list = [1,3,5,7]
        second_list = [2,4,6,8]
        

        【讨论】:

        • 这没有提供问题的答案。
        猜你喜欢
        • 1970-01-01
        • 2018-01-07
        • 1970-01-01
        • 2017-09-08
        • 1970-01-01
        • 2017-06-20
        • 2022-12-02
        • 1970-01-01
        • 2019-05-26
        相关资源
        最近更新 更多