gpt4 book ai didi

python - 转置列表

转载 作者:太空宇宙 更新时间:2023-11-04 09:04:04 26 4
gpt4 key购买 nike

假设我有一个嵌套列表 m = [[2, 3], [4, 7]] 我想转置它以便得到 [[2, 4] , [3, 7]] 或者如果 m 可以是 [[1,2,3],[4,5,6],[7,8,9]] 那么之后通过转置函数我应该得到 [[1,4,7],[2,5,8],[3,6,9]]它也应该适用于 [[1,2,3],[4,5,6]] 返回 [[1,4],[2,5],[5, 6]]

def transpose(m):
t = make_copy(m) ##[[2, 3], [4, 7]]
if len(t) == 1: ## if [[1]]
return t ##[[1]]
i = 0
while i <= len(t): #0 <= 2
t[0][i] = t[i][0] #t[0][0] = t[0]t[0] ## t[0][1] = t[1][0] so now 3 = 4
i += 1 #1
return t

我认为这应该可行,但没有给我想要的答案。怎么了?

最佳答案

使用zip功能

print zip(*[[2, 3], [4, 7]])
# [(2, 4), (3, 7)]

所以,你的转置函数就变成了这样

def transpose(m):
return zip(*m)

assert transpose([[2, 3], [4, 7]]) == [(2, 4), (3, 7)]
assert transpose([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) == [
(1, 4, 7), (2, 5, 8), (3, 6, 9)]

请记住,它只返回一个元组列表。它们几乎可以互换使用,除了创建它们的语法不同且元组不可变的事实。

如果你真的只想得到列表的列表,你已经投入了一个理解或一个 map 函数,就像这样

def transpose(m):
return [list(item) in zip(*m)]
# return map(list, zip(*m))

assert transpose([[2, 3], [4, 7]]) == [[2, 4], [3, 7]]
assert transpose([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) == [
[1, 4, 7], [2, 5, 8], [3, 6, 9]]
assert transpose([[1, 2, 3], [4, 5, 6]]) == [[1, 4], [2, 5], [3, 6]]

关于python - 转置列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22587502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com