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

时间:2017-12-04 14:42:12

标签: python python-3.x

我的问题是:如果我的aList中的任何值小于常量变量,我想获取该较低值的索引并从对应于该索引的bList中删除sth。不久,我想将aList中的所有值与常量进行比较,如果aList中的值低于常量。我将得到这些索引,并使用该索引制作> webpack-dev-server --config /home/user/project/path_to_config_file

示例:

让我们说

bList[index]= 0.

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

我想constantToCompare = bList

顺便说一下,[100, 200, 300, 400, 0]将增加+1,直到某些为止,这样就需要一个循环来执行此过程。

谢谢。 我希望我很清楚。

3 个答案:

答案 0 :(得分:1)

既然你是初学者,我会尝试清楚地分解这些步骤。您想要遍历aList。由于您关心每个元素的索引以及元素本身,因此您需要使用enumerate

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

我使用列表理解来简洁,但在实际代码中,我可能更喜欢较长版本的可读性。

希望这有帮助!

答案 1 :(得分:0)

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

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)

答案 2 :(得分:0)

您可以使用列表推导来完成此任务。

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在处理一个循环期间发生变化,则无法使用此方法。我不确定是不是这种情况,或者你想多次完成整个过程。无论是什么,变量名称的“常量”部分都是误导性的,应该改变。