如何迭代列表并连续以降序或升序逐个获取值?

时间:2015-01-25 10:58:56

标签: python kivy

我有一个包含按钮名称的列表。首先,这些按钮用于触摸屏设备,而touch_move事件会使按钮具有基于列表的不同名称。所以我不是一次显示所有按钮。我希望能够显示一个连续的列表,即按钮1 - 10,只要有事件就会重复。

def get_nextname(self, *args):
    #self.get_button_names is a list of names
    num = len(self.get_button_names)
    count = 0
    while (count <= num):
        self.c1name.text = self.get_button_names[count]
        count = count + 1

1 个答案:

答案 0 :(得分:0)

您可以使用itertools.cycle来循环按钮对象:

>>> from itertools import cycle

>>> buttons = range(1, 11)
>>> buttons_cycle = cycle(buttons)

>>> for _ in xrange(20):
...     print buttons_cycle.next()

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10

或循环按钮列表的索引:

>>> from itertools import cycle

>>> buttons = range(1, 11)
>>> idx_cycle = cycle(xrange(len(buttons)))

>>> for _ in xrange(20):
...     print buttons[idx_cycle.next()]

哪一个最适合你。就个人而言,我会坚持第一个版本。

请记住,itertools.cycle会存储内部循环的列表。