调用后如何删除一个列表变量?

时间:2019-12-16 17:38:45

标签: python python-3.x

States = 'alabama', 'alaska', 'arizona', 'arkansas'.....
randomState = random.randint(1, 50)
print(States[randomState])

我制作了一个脚本,从50个状态中随机选择一个状态,它可以工作,但是我还想删除它所调用的状态,即它在下一次调用时不会使用相同的变量重复。 / p>

2 个答案:

答案 0 :(得分:4)

我们在这里

import random

States = ['alabama', 'alaska', 'arizona', 'arkansas']
randomState = random.randint(0, len(States) - 1)
print(States.pop(randomState))

多个呼叫示例

import random

States = ['alabama', 'alaska', 'arizona', 'arkansas']

while States:
    randomState = random.randint(0, len(States) - 1)
    print('Removed random state: {}'.format(States.pop(randomState)))

输出

python test.py
Removed random state: alaska
Removed random state: alabama
Removed random state: arizona
Removed random state: arkansas

答案 1 :(得分:1)

要删除列表中已知索引处的元素,可以使用pop函数。

  

Python Data Structures

     

list.pop([i])   删除列表中给定位置的项目,然后   把它返还。如果未指定索引,则a.pop()删除并返回   列表中的最后一项。 (方法中i周围的方括号   签名表示该参数是可选的,而不是您应该   在该位置键入方括号。您将看到此表示法   经常在Python库参考中找到。)

请注意,如果您尝试弹出“超出范围”的索引,则会引发“ IndexError”。

关于此:

  

“我还想删除它称其在下一次迭代中不重复使用> same变量的状态”

以下代码将随机打印所有状态,直到将列表中的所有状态打印出来,而不会从原始列表中永久删除状态(它将混合原始顺序)。

import random

states = ['alabama', 'alaska', 'arizona', 'arkansas']
already_printed_count = 0

while already_printed_count < len(states):
    random_state = states.pop(random.randint(0, len(states) - already_printed_count - 1))
    already_printed_count += 1
    states.append(random_state)
    print(random_state)

输出:

alaska
arkansas
alabama
arizona
>>> states
['alaska', 'arkansas', 'alabama', 'arizona']