在python中列出算术运算

时间:2018-04-13 07:11:48

标签: python python-3.x

关于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!

1 个答案:

答案 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)  

希望这会有所帮助。并期待其他人给出更好的答案:)