首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >for循环中的Python循环计数器

for循环中的Python循环计数器
EN

Stack Overflow用户
提问于 2009-07-26 21:05:26
回答 3查看 320K关注 0票数 152

在我下面的示例代码中,计数器=0真的是必需的吗,或者有没有更好的、更像Python的方法来访问循环计数器?我看到一些与循环计数器相关的PEP,但它们要么被延迟,要么被拒绝(PEP 212PEP 281)。

这是我的问题的一个简化示例。在我的实际应用程序中,这是通过图形完成的,并且每个帧都必须重新绘制整个菜单。但这是以一种简单的文本方式演示的,很容易重现。

也许我还应该补充说,我正在使用Python2.5,尽管我仍然对是否有特定于2.6或更高版本的方法感兴趣。

代码语言:javascript
复制
# Draw all the options, but highlight the selected index
def draw_menu(options, selected_index):
    counter = 0
    for option in options:
        if counter == selected_index:
            print " [*] %s" % option
        else:
            print " [ ] %s" % option
        counter += 1


options = ['Option 0', 'Option 1', 'Option 2', 'Option 3']

draw_menu(option, 2) # Draw menu with "Option2" selected

运行时,它输出:

代码语言:javascript
复制
 [ ] Option 0
 [ ] Option 1
 [*] Option 2
 [ ] Option 3
EN

回答 3

Stack Overflow用户

发布于 2009-07-26 21:28:18

我有时会这样做:

代码语言:javascript
复制
def draw_menu(options, selected_index):
    for i in range(len(options)):
        if i == selected_index:
            print " [*] %s" % options[i]
        else:
            print " [ ] %s" % options[i]

虽然我倾向于避免这一点,如果这意味着我会多次说options[i]

票数 6
EN

Stack Overflow用户

发布于 2009-07-26 21:11:09

您还可以执行以下操作:

代码语言:javascript
复制
 for option in options:
      if option == options[selected_index]:
           #print
      else:
           #print

尽管如果有重复的选项,您会遇到问题。

票数 4
EN

Stack Overflow用户

发布于 2017-09-10 22:43:10

enumerate就是你要找的东西。

您可能还会对unpacking感兴趣

代码语言:javascript
复制
# The pattern
x, y, z = [1, 2, 3]

# also works in loops:
l = [(28, 'M'), (4, 'a'), (1990, 'r')]
for x, y in l:
    print(x)  # prints the numbers 28, 4, 1990

# and also
for index, (x, y) in enumerate(l):
    print(x)  # prints the numbers 28, 4, 1990

此外,还有itertools.count(),因此您可以执行以下操作

代码语言:javascript
复制
import itertools

for index, el in zip(itertools.count(), [28, 4, 1990]):
    print(el)  # prints the numbers 28, 4, 1990
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1185545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档