将一个元组数组拆分,同时保持两个数组

3

我有一个元组数组,希望将其中的元素拆分开来,并将元组两边分别放入不同的数组中。

我是Python的新手,不知道这个问题是否有明显的解决方案。

arr = [(1,4), (2,4)]

'''some code'''
arr1 = [1,2]
arr2 = [4,4]

5个回答

3

使用zip和扩展操作符*非常不错:

arr = [(1, 4), (2, 4)]

a = [*zip(*arr)]
b = [list(i) for i in zip(*arr)]

print(a)
# [(1, 2), (4, 4)]

print(b)
# [[1, 2], [4, 4]]

特别是如果您不需要结果作为列表


2

其中一种方法是使用一对列表推导式

arr1 = [t[0] for t in arr]
arr2 = [t[1] for t in arr]

这种方法在元组中有超过两个项目时会更好,因为您可以使用循环进行操作。列表推导可能一开始看起来很困惑,但其实相当强大。
另一种方法是使用好老式的 for 循环
arr1 = []
arr2 = []
for first, second in arr:
    arr1.append(first)
    arr2.append(second)

1

像这样迭代元组数组非常方便:

arr1 = []
arr2 = []

for x, y in arr:
    arr1.append(x)
    arr2.append(y)

每个arr元素都是一个包含两个元素的元组,因此这将元组解构为变量xy

0
你可以使用 Python 列表推导式 来完成这个任务。
arr1 = [x[0] for x in arr]
arr2 = [x[1] for x in arr]

基本上,这个程序的作用是对于数组中的每个元组x,在arr1中添加第一个元组元素(x[0]),同样地,在arr2中也是如此。

-1
另一种解决方案是使用函数zip
arr = [(1,4), (2,4)]
res = list(zip(*arr))  #  res = [(1, 2), (4, 4)]
arr1 = res[0] # arr1 = (1, 2)
arr2 = res[1] # arr2 = (4,4)

这可能比传统的for循环更方便,特别是当你有一个包含更多元素的列表时。

这会生成元组,但问题要求使用列表。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接