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

2024-10-03 04:38:43 发布

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

我的问题是:如果我的列表中的任何值小于一个常量变量,我想取那个较低值的索引,并从对应于那个索引的bList中删除某个东西。简而言之,我想把aList中的所有值与一个常量进行比较,如果aList中的值低于常量。我将得到这些的索引,并使用该索引生成bList[index]= 0.

示例:

让我们说

constantToCompare=8
aList=[13, 12, 11, 9, 7]     
bList=[100, 200, 300, 400, 500]

所以aList的第五个元素小于constantToCompare

我想让bList=[100, 200, 300, 400, 0]

顺便说一下,这个constantToCompare将增加+1到某个值,这样就需要一个循环来完成这个过程。你知道吗

谢谢你。 我希望我明白了。你知道吗


Tags: 元素示例列表index过程常量alist低值
3条回答

请通过下面的代码。这是经过测试的代码,希望这能解决你的问题。你知道吗

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)

既然你是初学者,我就试着把步骤分解清楚。您希望遍历aList。因为您关心每个元素的索引以及元素本身,所以需要使用^{}

for idx, val in enumerate(aList):

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

for idx, val in enumerate(aList):
   if val < constantToCompare:

如果是,则将bList中对应的元素设置为零:

for idx, val in enumerate(aList):
   if val < constantToCompare:
      bList[idx] = 0

要获得更简洁的外观,可以改用list comprehension(一种快速创建列表的方法):

bList = [bList[idx] for idx, val in enumerate(aList) if val >= constantToCompare else 0]

我不知道你说的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

为了简洁起见,我使用了列表理解,但在实际代码中,为了可读性,我可能更喜欢较长的版本。你知道吗

希望这有帮助!你知道吗

您可以使用列表理解来完成此任务。你知道吗

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。如果constant_to_compare在处理一个循环的过程中发生变化,则不能使用这种方法。我不确定是这样还是你想把整个过程重复多次。不管它是什么,变量名的“常量”部分是误导性的,应该更改。你知道吗

相关问题 更多 >