【发布时间】:2019-08-09 02:31:27
【问题描述】:
下面的代码可以从列表中获取最大值。然后它将它与列表中剩余值的最大值进行比较,如果它比下一个最大值高 1 以上,它用比下一个最大值高 1 替换原始列表最大值。我希望代码搜索整个列表并确保列表中的任何值最多比列表中的任何其他值大 1。我知道这不是最好的解释,我希望下面的示例列表使我想要完成的工作更加清晰。
例如,我不希望得到如下的最终列表:
[0,2,0,3]
我希望最终的名单是
[0,1,0,2]
输入:
empt=[0,2,0,0]
代码:
nwEmpt=[i for i in empt if i !=max(empt)]
nwEmpt2=[]
for i in range(0,len(empt)):
if (empt[i]==max(empt))&(max(empt)>(max(nwEmpt)+1)):
nwEmpt2.append((max(nwEmpt)+1))
elif (empt[i]==max(empt))&(max(empt)==(max(nwEmpt)+1)):
nwEmpt2.append(max(empt))
else:
nwEmpt2.append(empt[i])
输出:
nwEmpt2
[0,1,0,0]
【问题讨论】:
-
我不确定它是否与您的问题有关,但
&是按位与运算符。如果你想做逻辑与(看起来像),你需要and运算符。这将使您摆脱大部分分组括号。
标签: python-3.x list for-loop