使用函数将值重新分配给列表

时间:2014-01-02 21:00:00

标签: list function python-3.x

每次调用它时,如何重新分配列表中的值。例如:

def randomfunction():
    var1 = random.randint(1,10)
    return var1

list1 = [None,None,None,None]

list1[1] = randomfunction()

如何使list[1]值等于randomfunction()而不是函数返回的一个值。

即每次拨打list[1]时,randomfunction()都会有新值。

2 个答案:

答案 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]时,我都会得到不同的值。