Skip to main content
 首页 » 编程设计

python之对列表的每个其他元素求和/将每个其他元素复数

2025年05月04日17www_RR

给定一个一般的数字列表,比如 [1, 2, 3, 4, 5, 6],我需要将这个列表拆分为 [(1 + 2j), (3 + 4j), (5 + 6j)].

我可以将列表拆分为两个列表 - [1, 3, 5] 和 [2, 4, 6] - 但在尝试将它们组合成所需形式时遇到两个问题:i) 我无法将第二个相乘按 1j 列出,返回错误“不能将序列乘以‘复杂’类型的非整数”,并且 ii) 无论如何,列表将采用 [1、3、5、2、4、6] 形式,因为串联。

鉴于我正在处理包含 2048 个元素的列表,任何人都可以建议任何快速解决此问题的方法,因为显然大小使得以所需格式单独输入数据不切实际。

请您参考如下方法:

使用zip() 和切片:

In [72]: lis=[1, 2, 3, 4, 5, 6] 
 
In [73]: [complex(a,b) for a,b in zip(lis[::2],lis[1::2])] 
Out[73]: [(1+2j), (3+4j), (5+6j)] 

或:

In [74]: [complex(lis[i],lis[i+1]) for i in range(0,len(lis),2)] 
Out[74]: [(1+2j), (3+4j), (5+6j)] 

或使用迭代器,一种内存高效的解决方案:

In [76]: it=iter(lis) 
 
In [77]: [complex(next(it),next(it)) for _ in range(len(lis)/2)] 
Out[77]: [(1+2j), (3+4j), (5+6j)]