Python数列变量修改我写了段程序,为什么我只想修改数列的一个值,但是每次已修改整列的值都被修改了.程序如下:strategy_do_nothing=['DoNothing']*2strategy = []treatment=['DoNothing','Minor','Major']if len(strate

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 20:31:57
Python数列变量修改我写了段程序,为什么我只想修改数列的一个值,但是每次已修改整列的值都被修改了.程序如下:strategy_do_nothing=[''DoNothing'']*2strategy=

Python数列变量修改我写了段程序,为什么我只想修改数列的一个值,但是每次已修改整列的值都被修改了.程序如下:strategy_do_nothing=['DoNothing']*2strategy = []treatment=['DoNothing','Minor','Major']if len(strate
Python数列变量修改
我写了段程序,为什么我只想修改数列的一个值,但是每次已修改整列的值都被修改了.程序如下:
strategy_do_nothing=['DoNothing']*2
strategy = []
treatment=['DoNothing','Minor','Major']
if len(strategy)

Python数列变量修改我写了段程序,为什么我只想修改数列的一个值,但是每次已修改整列的值都被修改了.程序如下:strategy_do_nothing=['DoNothing']*2strategy = []treatment=['DoNothing','Minor','Major']if len(strate
在Python里面是分为可变对象与不可变对象两类的.
对于你这个问题就是strategy_do_nothing是list,而list是可变对象,所以在strategy.append(strategy_do_nothing)之后,这个strategy里面你每次往里面追加的都是strategy_do_nothing这个对象(注意是这个对象或者说这个可变的变量.而不是['DoNothing']*2这个值),但是在后面的strategy[k][0]=treatment[k]当k = 0时,就是strategy[0][0]=treatment[0],此时strategy的strategy[0][0]就是strategy_do_nothing这个对象,你在这里对他赋值改变了他的值,那么在其他地方用到这个对象的时候也会改掉他的值,所以使得最终所有的strategy_do_nothing的地方都成为同样的东西了.
要解决这个方法:
strategy.append(strategy_do_nothing)改成strategy.append(strategy_do_nothing[:])
或者是用copy.deepcopy,或者Google一下"Python deep copy"、"Python 深拷贝"
PS:不知道你原意是要干嘛,如果要实现这个效果,为何不:
treatment = ['DoNothing','Minor','Major']
strategy_do_nothing = ['DoNothing'] * len(treatment)
strategy = zip(treatment,strategy_do_nothing)
print strategy
PS:你for k in range(len(treatment)):写的实在有点奇葩哈……

Python数列变量修改我写了段程序,为什么我只想修改数列的一个值,但是每次已修改整列的值都被修改了.程序如下:strategy_do_nothing=['DoNothing']*2strategy = []treatment=['DoNothing','Minor','Major']if len(strate 用python二分法求平方根,这个程序为什么错了?要求:编写程序,输入一个在[0,1]范围内的小数x,用二分法求x的平方根.我写的程序是这样的:def main():x=input('x')n=0if x=0:guess=0.5if abs(x-guess**2)=0.0000001 以下程序段运行后变量a的值为( ).int i=1,a=0; for( ;i 谁能帮我编段优化设计程序啊,一直目标函数、约束、变量,求满足约束且目标最小时的变量取值,万分感谢 执行以下程序段后,变量x,y,z的值分别为().int a=1,b=0,x,y,z; x=(--a==b++)?--a:++b; y=a++; z=b;执行以下程序段后,变量x,y,z的值分别为().int a=1,b=0,x,y,z;x=(--a==b++)?--a:++b;y=a++;z=b;帮我具体分析一下,特 C# 计算程序运行时间我现在用C#.net写了一段程序,想计算这段程序运行的准确时间.这是要用于跟其它实验结果作对比的,所以要精确到毫秒.如何计时呢? 写一个python的script,要求生成1000个随机的[a,b,c]数列;a,b,c在0和1之间rt.这是project的一部分.其他部分都搞定了.但是这部分始终不会写 C语言 改错编程题如下switch语言程序段有错误.若a和b是正整数变量,编写程序,将下列程序段嵌入其中,调试并修改其中错误.switch (a*a+b*b);{ case 3 ;case 1 ; y=a+b ; break;case 0 ; y=b-a ;break;}能不能随便编 下列程序段中,变量i,j,k,sum,a[]为整形,x,c[]为字符型.char c[]={china};c[1]=() 下列程序段中,变量i,j,k,sum,a[]为整形,x,c[]为字符型.int a[]={1,2,3,4,5};a[1]=() 有如下程序段:a=3 b=5 z=a a=b b=z 该程序段运行后,变量a的值为( ) A.3 B.5 C.8 D.0请详解 我想知道解题过程执行下面程序段后,变量k的值为()for(k=0,m=1;m 以下程序段执行后,整型变量a和b的值分别为a=6,b=5,a=a,b=a*b 下列Visual Basic程序段运行后,变量min的结果为():A=10 :b=5 :min=aIf b 下列程序段运行后变量n的值为n = 0For x = 3 To 13 Step 2n = n + 1Next xPrint n 以下程序段运行后变量k的值为( ).int m=7,n=2,k; k=(m^n) 以下程序段执行后变量K的值为?int x=20;y=30 k=(x>y)?y:x 假定x、y、z、m均为int型变量,有如下程序段:x=2; y=3; z=1; m=(y