如何在包含多个子列表的列表中检查多个条件?

2024-09-25 12:21:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有如下清单:

mylist = [((-1), (2)) ,((-3-4j), (5-6j)), ((-3+4j), (5+6j)), ((-7-8j), (-9-10j)), ((-7+8j), (-9+10j)), ((-11-12j), (13+14j)), ((-11+12j), (13+14j))]

我想检查一下这个清单上的两个条件。 例如,对于第二个元素((-3-4j),(5-6j)),我想检查5-6j的实部是否为正,(-3-4j)和(5-6j)的虚部的符号是否不同,然后我想知道列表中该元素的编号。 第一个元素由两个实数组成,因为2是正的,所以第一个元素满足条件。 如您所见,只有第一个元素和最后两个元素满足条件。你知道吗

我已经根据我发现的东西编写了一个代码,但它只检查每个元素第二个数字的真实部分。你知道吗


violates = [i for i, a in enumerate(mylist) if any([aa.real > 0 for aa in a])]
print ("violates=", violates)

基于条件的输出必须是0、5和6。 谢谢你的帮助。你知道吗


Tags: 代码in元素列表for符号条件编号
2条回答

远离代码,尝试用文字更详细地描述这些步骤。例如,根据我对你问题的理解,你可以这样开始:

  • 对于列表中的每对数字(x,y)
    • 如果y的实部为正,那么。。。你知道吗
    • 让席成为X和Y的虚部,成为Y
    • 的虚构部分 如果席和意的符号不同,那么…你知道吗

注意我是如何翻译你的描述的,你写了一个段落,并格式化它看起来更像代码。同时,我并不过分担心python语法。我仍在使用单词,但尝试将这些单词转换为类似于用python编写代码的方式。你需要完成细节的充实,特别是在我放“…”的地方。然后,您需要查看一些文档,了解如何获得复数的实部和虚部,以及如何获得数字的符号。你知道吗

这是可行的,但6不是一个有效的情况。两个虚部有相同的符号。你知道吗

sign = lambda x: x and (1, -1)[x < 0]
violates = [(i,a) for i, a in enumerate(mylist) if (((a[0].real > 0) | (a[1].real > 0)) & ((sign(a[0].imag) + sign(a[1].imag))==0))]

相关问题 更多 >