Python .pop(),如何通过调用num.pop()让它无限循环?

问题描述 投票:0回答:1
nums = [4,3,2,1]

if len(nums) == 0:
    nums = [4,3,2,1]

我也尝试了这个变化,我知道在两个版本中,布尔表达式都会返回true。

nums = [4,3,2,1]

if nums == []:
    nums = [4,3,2,1]

以下是结果。

nums.pop()
1

nums.pop()
2

nums.pop()
3

nums.pop()
4

nums.pop()
IndexError: pop from empty list
python python-3.x list
1个回答
1
投票

你想让列表变空后被重置吗?

nums = [4,3,2,1]

while True:
    while nums:
        nums.pop()
    nums = [4,3,2,1]

更新。


class fake_iter:

    def __init__(self, arr: tuple):
        self.nums = arr
        self.ind = 0

    def next(self):
        res = self.nums[self.ind]
        self.ind = (self.ind + 1) % len(self.nums) # you might only need this
        return res

it = fake_iter((1, 2, 3, 4))

for i in range(10):
    print(it.next())


1
投票

你可能想要这样的东西

global control, nums
control=True
nums = []
def myloop():
    global control,nums
    if control==True:
        nums = [4,3,2,1] 
        control=False

    if len(nums)==1:
        control=True

    return nums.pop()


for i in range(10):
    print(myloop()) 
© www.soinside.com 2019 - 2024. All rights reserved.