将多个值存储在数组Python

时间:2018-11-23 21:08:04

标签: python arrays

我正在执行一个代码,该代码需要将输入的值存储在两个数组中。我要举一个例子。

输入:1,2,3,4,5,6,7,8

Array1= []
Array2= []

我想做的是将输入的第一个值存储在array1中,将第二个存储在array2中。最终结果将是

Array1=[1,3,5,7]
Array2=[2,4,6,8]

是否可以在python3中做到这一点?谢谢

我尝试过类似的操作,但不起作用

arr1,arr2 = list(map(int, input().split())) 

5 个答案:

答案 0 :(得分:7)

您可以使用以下内容:

l = [int(x) for x in input().split(',')]
array_1 = l[::2]
array_2 = l[1::2]

答案 1 :(得分:2)

因此,我假设您可以使用拆分将输入输入到列表或“数组”中?最好以某种方式“映射”值,而numpy可能会提供一个好的解决方案。不过,这是直接的工作;

while INPUTS:
  ARRAY1.append(INPUTS.pop())
  if INPUTS:
    ARRAY2.append(INPUTS.pop())

答案 2 :(得分:1)

您的尝试:

arr1,arr2 = list(map(int, input().split())) 

试图平均分解2个元素中的8个元素的列表。 Python可以将2个元素解压缩为1个或2个,甚至可以使用可迭代的解压缩,例如:

>>> arr1,*arr2 = [1,2,3,4]
>>> arr2
[2, 3, 4]

但是您看到的结果不是您想要的。

而不是解压缩,而是循环使用列表列表和模来计算正确的目的地:

lst = list(range(1,9)) # or list(map(int, input().split()))  in interactive string mode

arrays = [[],[]]

for element in lst:
    arrays[element%2].append(element)

结果:

[[2, 4, 6, 8], [1, 3, 5, 7]]

(用arrays[1-element%2]更改顺序)

一般情况是根据条件产生索引:

arrays[0 if some_condition(element) else 1].append(element)

或具有2个列表变量:

(array1 if some_condition(element) else array2).append(element)

答案 3 :(得分:0)

我在类中有解决方案;)

class AlternateList:
    def __init__(self):
        self._aList = [[],[]]

        self._length = 0

    def getItem(self, index):
        listSelection = int(index) % 2

        if listSelection == 0:
            return self._aList[listSelection][int(index / 2)]
        else:
            return self._aList[listSelection][int((index -1) / 2)]

    def append(self, item):
        # select list (array) calculating the mod 2 of the actual length. 
        # This alternate between 0 and 1 depending if the length is even or odd
        self._aList[int(self._length % 2)].append(item)
        self._length += 1

    def toList(self):
        return self._aList

    # add more methods like pop, slice, etc

使用方法:

inputs = ['lemon', 'apple', 'banana', 'orange']

aList  = AlternateList()

for i in inputs:
    aList.append(i)

print(aList.toList()[0]) # prints -> ['lemon', 'banana']
print(aList.toList()[1]) # prints -> ['apple', 'orange']

print(aList.getItem(3))  # prints -> "orange" (it follow append order)

答案 4 :(得分:0)

pythonic方式

根据上述问题,我在这里做了一些假设:

  1. 给出的输入仅包含整数。

  2. oddeven是两个分别包含奇数和偶数的数组。

odd, even = list(), list()

[even.append(i) if i % 2 == 0 else odd.append(i) for i in list(map(int, input().split()))]

print("Even: {}".format(even))
print("Odd: {}".format(odd))