Python:如果列表中的任何值(Y)小于常量,请删除Y';从另一个列表中删除相应的索引

Python:如果列表中的任何值(Y)小于常量,请删除Y';从另一个列表中删除相应的索引,python,python-3.x,Python,Python 3.x,我的问题是:如果我的列表中的任何值小于常量变量,我想取那个较低值的索引,并从对应于该索引的一个闪电中删除某个值。简单地说,我想将aList中的所有值与常数进行比较,如果aList中的值低于常数。我将获得这些索引,并使用该索引使bList[index]=0。 例如: 比方说 constantToCompare=8 aList=[13, 12, 11, 9, 7] bList=[100, 200, 300, 400, 500] 所以aList的第5个元素小于constantToCompa

我的问题是:如果我的列表中的任何值小于常量变量,我想取那个较低值的索引,并从对应于该索引的一个闪电中删除某个值。简单地说,我想将aList中的所有值与常数进行比较,如果aList中的值低于常数。我将获得这些索引,并使用该索引使
bList[index]=0。

例如:

比方说

constantToCompare=8
aList=[13, 12, 11, 9, 7]     
bList=[100, 200, 300, 400, 500]
所以
aList
的第5个元素小于
constantToCompare

我想制作
bList
=
[1002003004000]

顺便说一下,这个
constantToCompare
将增加+1,直到达到某个值,因此执行此过程需要一个循环

多谢各位。
我希望我很清楚。

请仔细阅读下面的代码。这是经过测试的代码,希望这能解决您的问题

constantToCompare=8
aList=[13, 12, 11, 9, 7,1,2,2] 
bList=[100, 200, 300, 400, 500,12,3,56]
for i in range(0,len(aList)):
    if(constantToCompare>aList[i]):
        bList[i]=0
print(bList)

您可以使用列表理解来完成此任务

constant_to_compare = 8
a_list = [13, 12, 11, 9, 7]     
b_list = [100, 200, 300, 400, 500]
b_list = [element[1] if element[0] > constant_to_compare else 0 for element in zip(a_list, b_list)]
zip
将属于一起的数据放在一起,然后决定是保留原始值还是将其设置为
0


在问题中,您说用于比较的值将在处理过程中更改
+1
。如果在一个循环的处理过程中,
常量与常量比较
发生变化,则无法使用此方法。我不确定是这样,还是你想把整个过程重复多次。不管是什么,变量名中的“常量”部分有误导性,应该更改。

既然您是初学者,我将尝试清楚地分解这些步骤。您想在
aList
中进行迭代。由于您关心每个元素的索引以及元素本身,因此需要使用:

在这个循环中,您可以使用
idx
获取当前索引的值,并使用
val
获取当前正在查看的元素的值。然后要检查
val
是否小于常数:

for idx, val in enumerate(aList):
   if val < constantToCompare:
要获得更简洁的外观,您可以使用(创建列表的快速方法):

我不知道你说的
constantToCompare
增加是什么意思。如果要多次执行此操作,可以将其全部打包到另一个循环中:

for constantToCompare in range(start_val, end_val+1):
   bList = [bList[idx] for idx, val in enumerate(aList) if val >= constantToCompare else 0]
如果希望在浏览列表时增加,可以向循环中添加另一行:

for idx, val in enumerate(aList):
   if val < constantToCompare:
      bList[idx] = 0
   constantToCompare += 1
对于枚举中的idx、val(列表):
如果val
为了简洁起见,我使用了列表理解,但在实际代码中,为了可读性,我可能更喜欢较长的版本


希望这有帮助

你应该先自己尝试一些东西,然后在这个网站上发布任何疑问是的,你很清楚,但我们应该为你编写这些代码?我只需要学习使用什么和知道什么,我只是python的初学者,我被困在这部分问题上。你想删除相应的元素还是想将其设置为零?这些是非常不同的@很抱歉,colopop将其设置为0。这仅在
aList
仅包含唯一值的情况下有效。因此,您希望在aList元素小于constantToCompare?的所有位置的bList中都使用0。mesboomin请测试它是否正常工作。请告诉我是否需要我的帮助,因为OP是python的新成员,他们可能需要对列表中发生的事情进行一些解释。
bList = [bList[idx] for idx, val in enumerate(aList) if val >= constantToCompare else 0]
for constantToCompare in range(start_val, end_val+1):
   bList = [bList[idx] for idx, val in enumerate(aList) if val >= constantToCompare else 0]
for idx, val in enumerate(aList):
   if val < constantToCompare:
      bList[idx] = 0
   constantToCompare += 1