首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环和列表的麻烦

循环和列表的麻烦
EN

Stack Overflow用户
提问于 2020-04-15 22:23:27
回答 1查看 26关注 0票数 0

我正在制作一个函数,将一个名为param_list的3d列表组合在一起。在函数的最后一个for循环中,所有的列表值都是我想要的,但是就在循环之外,值是错误的。

代码语言:javascript
复制
def make_param_combos( params ):
   size = []
   param_list = []
   temp_params = []
   one_param = ['param','value']
   num_params = len( params )

   for j in range( num_params ) :

      if j == 0 :
        size.append( len(params[j][1] ) )
      else :
        size.append( len(params[j][1]) * size[j-1] ) 
        num_combos = size[j]

   for i in range( num_combos ) :

      temp_params.clear()

      for j in range( num_params ) :

         one_param = [ params[j][0], params[j][1][ int( np.mod( len( params[j][1] ) * i/size[j], len( params[j][1] ) ) ) ] ]

         temp_params.append( one_param )  

      param_list.append( temp_params )

      print( "loop iter", i, param_list[i] )

   print( "out of loop" )
   print( param_list )

   return param_list



plist = make_param_combos([[['param1'],['v11','v12']],[['param2'],['v21','v22']],[['param3'],['v31','v32']]]) 

print( "out of function" )

for i in range(len(plist)):
  print(plist[i])

结果:

循环iter 0[[‘顺1’,'v11'],[‘顺2’,'v21'],[‘顺3’,‘v31’]环iter 1[[‘顺1’,'v12'],[‘顺2’,'v21'],[‘顺3’,‘v31’]

循环iter 2[[‘顺1’,'v11'],[‘顺2’,'v22'],[‘顺3’,‘v31’]

循环iter 3[[‘顺1’,'v12'],[‘顺2’,'v22'],[‘顺3’,‘v31’]

循环iter 4[[‘顺1’,'v11'],[‘顺2’,'v21'],[‘顺3’,‘v32’]

循环iter 5[[‘顺1’,'v12'],[‘顺2’,'v21'],[‘顺3’,‘v32’]

循环iter 6[[‘顺1’,'v11'],[‘顺2’,'v22'],[‘顺3’,‘v32’]

循环iter 7[[‘顺1’,'v12'],[‘顺2’,'v22'],[‘顺3’,‘v32’]

不循环[‘顺1’,'v12'],[‘顺2’,'v22'],[顺3‘,'v32']],[[顺1’,'v12'],[‘顺2’,'v22'],[顺3‘,’v32‘],[[顺1’,‘顺2’,'v22'],[顺3‘,’v32‘],[’顺1‘,’v32‘]“v12”、“v22 2”、“v22”、[“v22 3”、“v32”]、[“顺亲1”、“v12”]、[顺2‘、'v22']、[’顺3‘、’v32‘]、[[顺1’、'v12']、[顺2‘、'v22']、[’顺3‘、’v32‘]、[顺1’、'v12']、[‘顺2’、‘顺2’,‘v22’,[‘顺3’,‘v32’],[[‘顺’,'v12'],[‘顺’,'v22'],[‘顺3’,'v32']]

失去功能

[[‘顺1’,'v12'],[顺2‘,'v22'],[顺3’,‘v32’]

[[‘顺1’,'v12'],[顺2‘,'v22'],[顺3’,‘v32’]

[[‘顺1’,'v12'],[‘顺2’,'v22'],[顺3‘,’v32‘]

[[‘顺1’,'v12'],[顺2‘,'v22'],[顺3’,‘v32’]

[[‘顺1’,'v12'],[顺2‘,'v22'],[顺3’,‘v32’]

[[‘顺1’,'v12'],[顺2‘,'v22'],[顺3’,‘v32’]

[[‘顺1’,'v12'],[顺2‘,'v22'],[顺3’,‘v32’]

[[‘顺1’,'v12'],[‘顺2’,'v22'],[‘顺3’,‘v32’]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-15 22:28:07

temp_params.clear()替换为temp_params = []。您需要一个新的列表,.clear()将从旧列表中删除所有元素--刚才添加到param_list的元素。您已经添加了这个列表,它是您现在正在清除的列表,而不是它的副本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61239642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档