Возврат каждого элемента в списке в порядке - PullRequest
0 голосов
/ 13 июня 2018
list = ['0','1','2','3','4','5','6']

for item in list:
    return item

Моя цель:

1-й раз, когда я запускаю эту функцию, я бы хотел 0
2-й раз, когда я запускаю эту функцию, я бы хотел 1
3-й раз, когда я запускаю эту функцию, я бы хотел2
.
.
.
В седьмой раз, когда запускается эта функция, я бы хотел, чтобы 6.

print (item) делал этот трюк, но есть ли способ сделать это с возвратом?

спасибо

Ответы [ 5 ]

0 голосов
/ 13 июня 2018

Может быть, это поможет вам, вы можете получить следующий элемент на .get_next() и сбросить на первый элемент на .reset().Просто инициализируйте объект с помощью Looper(items*), как вы сделали бы со списком.

class Looper(list):
    _counter = -1

    def get_next(self):
        self._counter += 1
        return self[self._counter]

    def reset_counter(self):
        self._counter = -1

Я действительно не знал, как его назвать, поэтому ради времени просто выбрал Looper.

0 голосов
/ 13 июня 2018

вам не хватает ' после 2, это может работать для вас:

list = ['0', '1', '2', '3', '4', '5', '6']

def get_list_item(list, index):
    return list[index]

for index in range(0, len(list)):
    print(get_list_item(list, index))
0 голосов
/ 13 июня 2018

Вы можете использовать переменную счетчика.

counter = 0
l = ['0','1','2','3','4','5','6']

def returnVal():
  global counter
  global l
  counter = (counter + 1) % len(l)
  return l[counter]

print(returnVal())
print(returnVal())
print(returnVal())
print(returnVal())
print(returnVal())
print(returnVal())
print(returnVal())
print(returnVal())

Рабочий пример: https://repl.it/@LukasBach/VoluminousFrozenHexadecimal

0 голосов
/ 13 июня 2018

Я думаю, вы ищете метод с именем pop

Каждый раз, когда вы запускаете list.pop (0), он выскакивает первый элемент в списке, поэтому, если вы запустите его несколько раз, он будетвозвращая каждый элемент один за другим

>>> list = ['0','1','2','3','4','5','6']
>>> list.pop(0)
'0'
>>> list.pop(0)
'1'
>>> list.pop(0)
'2'
0 голосов
/ 13 июня 2018

Попробуйте использовать next:

>>> l = ['0','1','2','3','4','5','6']
>>> iter_ = iter(l)
>>> next(iter_)
'0'
>>> next(iter_)
'1'
>>> next(iter_)
'2'
>>> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...