关于python list算法的一个问题陈述,我有一个列表说,
my_set = [24565,24621,32,598,899]
我想区分前两个元素,如果差异在-127到127的范围内,则将+128添加到下一个索引位置,依此类推。列表的第一个元素保持原样
像这样输出
[24565, 56, +128, 24589, +128, −566, +128, -301].
这是我试图做的事情
def inRange(val):
return val in range(-127,127)
my_set = [24565,24621,32,598,899]
for i in range(len(my_set)-1):
res = my_set[i] - my_set[i+1]
if inRange(res) == True:
my_set.insert(i+1,res)
my_set.insert(i+2,128)
print(my_set)
请告诉我该怎么做。 THANKYOU!
答案 0 :(得分:1)
但是在您编写的所需输出中,尽管存在差异,但您仍在添加128。而且您还将差异值添加到列表中。我在那里感到困惑。无论如何,这确实将差异和128添加到列表中。此外,您是否可以使用新列表来更新输出,还是应该更新相同的列表?第一种情况,很容易;第二种情况,你可以尝试下面的代码
def inRange(val): # a simple if is enough and faster range
if val < 127 and val >= -127:
return True
my_set = [24565,24621,32,598,899]
#as you wanted the first element as is, moved this piece of code out of the loop
my_set.insert(1, my_set[0]-my_set[1])
my_set.insert(2,128)
i = 3
while i < len(my_set) - 1:
res = my_set[i] - my_set[i+1]
#if inRange(res) == True: # you can add this loop if required and do the inserts accordingly
my_set[i] = res
my_set.insert(i+1, 128)
i = i + 2 # if you are gonna add the if check and insert only then, you might want to change the i increment as per that
print(my_set)
希望这会有所帮助。并期待其他人给出更好的答案:)