我的问题是:如果我的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,直到某些为止,这样就需要一个循环来执行此过程。
谢谢。 我希望我很清楚。
答案 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
在处理一个循环期间发生变化,则无法使用此方法。我不确定是不是这种情况,或者你想多次完成整个过程。无论是什么,变量名称的“常量”部分都是误导性的,应该改变。