gpt4 book ai didi

python - 如何从不满足单独条件的三个列表中删除相同位置的元素

转载 作者:太空宇宙 更新时间:2023-11-03 21:05:34 27 4
gpt4 key购买 nike

我有三个元组,listA , listB ,和listC .

重要的是,在每个列表中,每个值都与其在其他两个列表中的初始对应值保持相同的索引。

我有两个条件,一个是 listA和一个 listB 。我想要 listA 中的所有值不满足listA条件删除,以及 listB 中的所有值不满足 listB 条件的已删除,因此所有三个列表中与这些已删除值具有相同索引的所有值也将被删除。

这将涉及删除一些满足 listA 的值条件来自listA等等如果 listB不满足条件。因此,结果是三个列表,它们的值都单独满足自己列表的条件(尽管 listC 没有条件),并且这些值具有与最初相同的配对。

我已经成功地通过使用 for 循环遍历列表来完成此操作,下面显示了我执行此操作的示例,对 listA 施加的条件是 x<10,对 listB 施加的条件是 x>20。我知道有很多更优雅和Pythonic的方法可以使用zip和过滤来完成此操作,但是到目前为止我还无法让它们工作。我不是一个非常有经验的程序员,因此我们将不胜感激任何帮助。

listA=(15,5,2,8,10,11,4,8) 
listB=(19,25,28,14,32,10,21,29)
listC=(0,9,13,4,19,51,83,13)

listAA=[]
listBB=[]
listCC=[]
for i in range(len(listA)):
if listA[i]<10:
if listB[i]>20:
listAA.append(listA[i])
listBB.append(listB[i])
listCC.append(listC[i])
else:
continue
else:
continue
print(listAA,listBB,listCC)

最佳答案

如果您有多个逐项对应的列表:zip将它们放在一起并对 zippes 进行操作 - 然后再次压缩它们以返回到您的元组:

listA = (15,5,2,8,10,11,4,8)           # not a list - it is a tupe
listB = (19,25,28,14,32,10,21,29) # not a list - it is a tupe
listC = (0,9,13,4,19,51,83,13) # not a list - it is a tupe

# create positional tuples, perform tests, reverse tupling, and decompose into tuples
A,B,C = list(zip(*filter(lambda x:x[0]<10 and x[1]>20, zip(listA,listB,listC))))

print(A)
print(B)
print(C)

输出:

(5, 2, 4, 8)
(25, 28, 21, 29)
(9, 13, 83, 13)

多库:

<小时/>
zip( [1,2,3],["a","b","c"],[99,88,77] ) => ((1,"a",99),(2,"b",88),(3,"c",77)) as generator

关于python - 如何从不满足单独条件的三个列表中删除相同位置的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55432985/

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