Python .pop (), как мне получить его до l oop бесконечно, вызвав num.pop ()? - PullRequest
0 голосов
/ 06 мая 2020
nums = [4,3,2,1]

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

Я тоже пробовал этот вариант, я знаю, что в обеих версиях логическое выражение возвращает истину.

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

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Может вы хотите что-то вроде этого:

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()) 
1 голос
/ 06 мая 2020

хотите, чтобы список был сброшен после того, как он станет пустым?

nums = [4,3,2,1]

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

update:


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())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...