States = 'alabama', 'alaska', 'arizona', 'arkansas'.....
randomState = random.randint(1, 50)
print(States[randomState])
我制作了一个脚本,从50个状态中随机选择一个状态,它可以工作,但是我还想删除它所调用的状态,即它在下一次调用时不会使用相同的变量重复。 / p>
答案 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函数。
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']