每次调用它时,如何重新分配列表中的值。例如:
def randomfunction():
var1 = random.randint(1,10)
return var1
list1 = [None,None,None,None]
list1[1] = randomfunction()
如何使list[1]
值等于randomfunction()
而不是函数返回的一个值。
即每次拨打list[1]
时,randomfunction()
都会有新值。
答案 0 :(得分:0)
您如何看待这个解决方案:
import random
class specli(list):
def __init__(self):
self.append(random.randint(1,10))
def __getitem__(self,i):
if i==0:
return random.randint(1,10)
elif i<len(self):
return super(specli,self).__getitem__(i)
else:
[][i]
L = specli()
print L
L.append('B')
print L
L.append('C')
print L
print '-------------'
print 'L[0] :',L[0]
print 'L[1] :',L[1]
print 'L[2] :',L[2]
print 'L[3] :',L[3]
结果
[2]
[2, 'B']
[2, 'B', 'C']
-------------
L[0] : 2
L[1] : B
L[2] : C
L[3] :
Traceback (most recent call last):
File "I:\potoh\ProvPy\quichotte.py", line 24, in <module>
print 'L[3] :',L[3]
File "I:\potoh\ProvPy\quichotte.py", line 12, in __getitem__
[][i]
IndexError: list index out of range
答案 1 :(得分:0)
要重新分配该值,您只需要继续调用该函数,并且每次调用它时,您很可能会收到不同的数字。
例如:
import random
def randomfunction():
var1 = random.randint(1,10)
return var1
list1 = [None,None,None,None]
list1[1] = randomfunction()
print(list1)
list1[1] = randomfunction()
print(list1)
list1[1] = randomfunction()
print(list1)
我收到了输出:
>>>
[None, 1, None, None]
[None, 6, None, None]
[None, 9, None, None]
因此,每次调用该函数并将其分配给list1[1]
时,我都会得到不同的值。