Python 将值指定给不同的索引位置,作为循环中的实际值

Python 将值指定给不同的索引位置,作为循环中的实际值,python,numpy,loops,indexing,position,Python,Numpy,Loops,Indexing,Position,接下来的变量是List、float和numpy数组 dt=list(范围(1,12)) c=18 极限=2.75 能量=np.零(len(dt)) 我想在Numpy数组Energy中分配值c=18。然而,有一个条件。能量向量中的值不能大于极限=2.75,因此c=18大于极限=2.75,应将其切割为2.5,并分配到回路的实际索引位置和向量能量的下一个索引位置,直到达到值18。我编写了这段代码,但它并没有真正有效地工作 范围(0,1)内的i的: 如果c>限制: tmp2=c-(限值) 如果tmp2

接下来的变量是List、float和numpy数组

dt=list(范围(1,12))
c=18
极限=2.75
能量=np.零(len(dt))
我想在Numpy数组
Energy
中分配值
c=18
。然而,有一个条件。
能量
向量中的值不能大于
极限=2.75
,因此
c=18
大于
极限=2.75
,应将其切割为
2.5
,并分配到回路的实际索引位置和向量
能量的下一个索引位置,直到达到值
18
。我编写了这段代码,但它并没有真正有效地工作

范围(0,1)内的i的
:
如果c>限制:
tmp2=c-(限值)
如果tmp2>(限制):
tmp3=tmp2-(限值)
如果tmp3>限制:
tmp4=tmp3-(限值)
如果tmp4>(限制):
tmp5=tmp4-(限值)
如果tmp5>(限制):
tmp6=tmp5-(限值)
如果tmp6>限制:
tmp7=tmp6-(限值)
如果tmp7>(限制):
tmp8=tmp7-(限值)
其他:
能量[i]=极限
能量[i+1]=极限
能量[i+2]=极限
能量[i+3]=极限
能量[i+4]=极限
能量[i+5]=极限
能量[i+6]=tmp7

你有办法让它变得更好吗?谢谢大家!

欢迎来到stackoverflow

您的代码目前使用一个不需要循环的循环,也不使用可以使用的循环

进入您的代码:

for i in range(0,1): 
如果我们将此更改为:

for i in range(0,1): 
    print (i)
我们将得到结果0-它只运行一次,因此不需要循环它-您的代码中没有提到我,因此不需要循环它

您可以使用循环将c分配给数组,但这不是必需的,我将留给您自己作为练习

它可以用一种不同的、更有效的方式来实现

首先,当您分配变量时,请尝试使它们具有描述性和可读性-您将花费比阅读更多的时间返回代码

我不知道您描述的是什么系统,所以我只给出了通用名称:

将numpy作为np导入

length_arrary=12

limit=2.75

value_to_be_assigned=18

energy_result=np.zeros(length_arrary)
现在我们真正要问的是两件事,赋值除以极限(整数)的次数是多少,余数是多少

Python对此楼层划分(//)和模数有两个操作,它们给出:

11//5 = 2.0
1%5   = 1.0
所以我们知道数组的第一个元素(value-to-be-assigned//limit-elements-1)需要等于limit,最后一个元素需要等于value-to-be-assigned%limit

最后,Python提供了一种访问列表元素的简单方法—我们可以将前x个元素设置为等于以下值:

array[:x]=value
x只需要是一个整数

综合起来,我们得到:

filled_values=int(value_to_be_assigned//limit)

energy_result[:filled_values]=limit

energy_result[filled_values] = value_to_be_assigned % limit
我们可以跟你核实一下

energy_result.sum() # gives us 18

变量名和函数名应遵循带有下划线的
小写形式。为什么你的代码中有这么少的空白?我正在学习,谢谢你的建议。我认为这也更容易理解,更具空间性。非常感谢您的回答、评论和建议!我真的很感激!祝你一切顺利。