【发布时间】:2015-04-23 06:02:24
【问题描述】:
我创建了一个函数,它通过循环、创建变量并将它们附加到列表中。
def function(self,RECORD):
TEMP_LIST_RECORDS=[]
#Depends the number of X, we got 10, 100,1000,10000 LOOPS
LOOPS=int(math.pow(10,X_RANGE))
DIGITS="%0"+str(X_RANGE)+"d"
#Then we create the records and we add to the MYSQL data query
for x in range (0,LOOPS):
END_OF_NUMBER=DIGITS%x
RECORD.DN=DN_NUMBER+str(END_OF_NUMBER)
RECORD.GN=GN_NUMBER+str(END_OF_NUMBER)
TEMP_LIST_RECORDS.append(RECORD)
return TEMP_LIST_RECORDS
说明:
我传递了一个名为RECORD 的对象,它有两个属性DN 和GN。
这些属性具有以下结构:0000213123XX,其中 XX 是两位数。
需要做的是为 XX 生成 00 到 99 之间的值,因此属性将是:000021312300、000021312301、... GN 更改范围。
正如我稍后解释的那样,在循环过程中会找到数字,但是一旦循环完成,列表中的所有对象都会成为最后一个找到的对象。
那么列表中返回的所有值都是:
000021312399 000021312399 000021312399 000021312399 000021312399 000021312399 000021312399 000021312399但是,如果我在循环中放一个打印:
def function(self,RECORD):
TEMP_LIST_RECORDS=[]
#Depends the number of X, we got 10, 100,1000,10000 LOOPS
LOOPS=int(math.pow(10,X_RANGE))
DIGITS="%0"+str(X_RANGE)+"d"
#Then we create the records and we add to the MYSQL data query
count=0
for x in range (0,LOOPS):
END_OF_NUMBER=DIGITS%x
RECORD.DN=DN_NUMBER+str(END_OF_NUMBER)
RECORD.GN=GN_NUMBER+str(END_OF_NUMBER)
TEMP_LIST_RECORDS.append(RECORD)
print TEMP_LIST_RECORDS[count].DN
count+=1
return TEMP_LIST_RECORDS
打印结果是:
000021312300 000021312301 000021312302 000021312303 000021312304 000021312305 000021312306 000021312307 ...谁能给我解释一下为什么?我该如何解决?
【问题讨论】:
-
变量名不要全部大写。
-
你还有一堆未定义的变量(或至少 TEMP_LIST_RECORDS)......但猜测 RECORD 是一个可变数据类型,你正在改变它......
-
问题是你不断将 same
RECORD附加到TEMP_LIST_RECORDS与TEMP_LIST_RECORDS.append(RECORD)语句,所以列表中只是一堆对给出了最后一个值RECORD。您需要在循环的每次迭代中创建一个新的并附加一个新的RECORD。 -
抱歉我的问题不清楚,我确实发布了更新,希望有人能给我一个解决方案:)
-
这就是您的解决方案。 @martineau 给了你。
标签: python list variables for-loop