如何检查列表(或数组)的条件,然后根据 Python 中的条件对元素进行排序
How to check a condition on a list (or array) and then sort the elements based on that condition in Python
我有一个包含 n 个元素的复数列表,我想检查有多少元素是实数(虚部为零),然后按照从实数开始的方式对我的列表进行排序.
例如下面的列表:
a = [ 7 + 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -1+ 0j, -8 + 4j, -8 - 4j]
两个元素是实数(第一个元素和第六个元素)我想知道我的列表中有 2 个实数元素,然后我想进行如下排序,以实数开头,其他元素保持不变:
b = [ 7 + 0j, -1+ 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -8 + 4j, -8 - 4j]
我该怎么做?
谢谢
您可以通过将虚部与零进行比较来对数字进行排序。 0的在前,其余数字不变。
a = sorted(a, key=lambda x:x.imag!=0)
print(a)
产出
[(7+0j), (-1+0j), (-2+3j), (-2-3j), (5+6j), (5-6j), (-8+4j), (-8-4j)]
要获取此类条目的数量,请使用
sum(x.imag == 0 for x in a)
Python 有一个带有 key
参数的 sorted
函数。
The value of the key parameter should be a function that takes a
single argument and returns a key to use for sorting purposes.
您可以根据检查是否存在非零虚部的 lambda 函数进行排序。
a = [ 7 + 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -1+ 0j, -8 + 4j, -8 - 4j]
sorted(a, key = lambda x: x.imag != 0)
#Output: [(7+0j), (-1+0j), (-2+3j), (-2-3j), (5+6j), (5-6j), (-8+4j), (-8-4j)]
我有一个包含 n 个元素的复数列表,我想检查有多少元素是实数(虚部为零),然后按照从实数开始的方式对我的列表进行排序.
例如下面的列表:
a = [ 7 + 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -1+ 0j, -8 + 4j, -8 - 4j]
两个元素是实数(第一个元素和第六个元素)我想知道我的列表中有 2 个实数元素,然后我想进行如下排序,以实数开头,其他元素保持不变:
b = [ 7 + 0j, -1+ 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -8 + 4j, -8 - 4j]
我该怎么做? 谢谢
您可以通过将虚部与零进行比较来对数字进行排序。 0的在前,其余数字不变。
a = sorted(a, key=lambda x:x.imag!=0)
print(a)
产出
[(7+0j), (-1+0j), (-2+3j), (-2-3j), (5+6j), (5-6j), (-8+4j), (-8-4j)]
要获取此类条目的数量,请使用
sum(x.imag == 0 for x in a)
Python 有一个带有 key
参数的 sorted
函数。
The value of the key parameter should be a function that takes a single argument and returns a key to use for sorting purposes.
您可以根据检查是否存在非零虚部的 lambda 函数进行排序。
a = [ 7 + 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -1+ 0j, -8 + 4j, -8 - 4j]
sorted(a, key = lambda x: x.imag != 0)
#Output: [(7+0j), (-1+0j), (-2+3j), (-2-3j), (5+6j), (5-6j), (-8+4j), (-8-4j)]