Python:如果列表中的任何值(Y)小于常量,请删除Y';从另一个列表中删除相应的索引
我的问题是:如果我的列表中的任何值小于常量变量,我想取那个较低值的索引,并从对应于该索引的一个闪电中删除某个值。简单地说,我想将aList中的所有值与常数进行比较,如果aList中的值低于常数。我将获得这些索引,并使用该索引使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
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