python以不断变化的方式对列表元素进行乘法
我想衰减列表中的元素,这样每5个元素,元素就会减少一半。例如,长度为10的列表将变为:python以不断变化的方式对列表元素进行乘法,python,list,list-comprehension,multiplication,Python,List,List Comprehension,Multiplication,我想衰减列表中的元素,这样每5个元素,元素就会减少一半。例如,长度为10的列表将变为: [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] [1,1,1,1,1,0.5,0.5,0.5,0.5,0.5,0.25,0.25,0.25,0.25,0.25] 我尝试了列表理解和基本for循环,但我无法解释它背后的逻辑。这就是你要找的吗 >>> x = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] >>>
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
[1,1,1,1,1,0.5,0.5,0.5,0.5,0.5,0.25,0.25,0.25,0.25,0.25]
我尝试了列表理解和基本for循环,但我无法解释它背后的逻辑。这就是你要找的吗
>>> x = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> r = [v*2**(-(i//5)) for i, v in enumerate(x)]
>>> r
[1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.25, 0.25]
>>>
这就是你要找的吗
>>> x = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> r = [v*2**(-(i//5)) for i, v in enumerate(x)]
>>> r
[1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.25, 0.25]
>>>
简单想想
value = 1
result = []
for i in range(3):
for j in range(5):
result.append(value)
else:
value /= 2
print(result)
# [1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.25, 0.25]
简单想想
value = 1
result = []
for i in range(3):
for j in range(5):
result.append(value)
else:
value /= 2
print(result)
# [1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.25, 0.25]
所有其他答案都很好,我想为此添加一个扩展解决方案
start_range = 0
end_range = 5
num = 1
x = [1 for _ in range(10)]
res = []
while start_range <= len(x):
for item in x[start_range:end_range]:
res.append(item*num)
start_range = end_range
end_range = start_range + 5
num /= float(2)
print res
# output: [1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5]
start\u范围=0
结束_范围=5
num=1
x=[1表示范围(10)]
res=[]
虽然所有其他答案都很好,但我想为此添加一个扩展解决方案
start_range = 0
end_range = 5
num = 1
x = [1 for _ in range(10)]
res = []
while start_range <= len(x):
for item in x[start_range:end_range]:
res.append(item*num)
start_range = end_range
end_range = start_range + 5
num /= float(2)
print res
# output: [1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5]
start\u范围=0
结束_范围=5
num=1
x=[1表示范围(10)]
res=[]
虽然start_范围非常感谢,但它与v*2**(-(i//5))
一起工作,将其更改为v/2**(i//5)
使其增加感谢,它与v*2**(-(i//5))
一起工作,将其更改为v/2**(i//5)
使其增加