GVKun编程网logo

for循环中的Python循环计数器(python for循环计数器)

23

关于for循环中的Python循环计数器和pythonfor循环计数器的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于for-loop–在循环执行时递减循环计数器、For循环中的Pytho

关于for循环中的Python循环计数器python for循环计数器的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于for-loop – 在循环执行时递减循环计数器、For循环中的Python列表、for循环中的Python过滤器函数、for循环中的最终计数器?等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

for循环中的Python循环计数器(python for循环计数器)

for循环中的Python循环计数器(python for循环计数器)

在下面的示例代码中,是否真的需要counter =
0,还是有更好,更多的Python方法来访问循环计数器?我看到了一些与循环计数器有关的PEP,但它们要么被延迟要么被拒绝(PEP
212和PEP
281)。

这是我的问题的简化示例。在我的实际应用程序中,这是通过图形完成的,整个菜单必须每帧重新绘制一次。但这以易于复制的简单文本方式进行了演示。

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

# Draw all the options, but highlight the selected indexdef draw_menu(options, selected_index):    counter = 0    for option in options:        if counter == selected_index:            print " [*] %s" % option        else:            print " [ ] %s" % option        counter += 1options = [''Option 0'', ''Option 1'', ''Option 2'', ''Option 3'']draw_menu(option, 2) # Draw menu with "Option2" selected

运行时,它输出:

 [ ] Option 0 [ ] Option 1 [*] Option 2 [ ] Option 3

答案1

小编典典

enumerate()
像这样使用:

def draw_menu(options, selected_index):    for counter, option in enumerate(options):        if counter == selected_index:            print " [*] %s" % option        else:            print " [ ] %s" % optionoptions = [''Option 0'', ''Option 1'', ''Option 2'', ''Option 3'']draw_menu(options, 2)

注意 :如果需要,您可以选择在圆括号内加上counter, option,例如(counter,option),但是它们是多余的,通常不包含在内。

for-loop – 在循环执行时递减循环计数器

for-loop – 在循环执行时递减循环计数器

我正在尝试在循环运行时减少for循环的计数器.不幸的是,Lua似乎不允许这样做.这段代码应该永远运行:

for i = 1,100 do
    print (i)
    i = i - 1
end

但它实际上只是打印1-100系列.这是设计的吗?如果是这样,我如何减少正在运行的循环的计数器(例如,因为当前循环被取消资格并且应该再次运行)?

解决方法

这是设计的.从 Lua reference manual开始:

3.3.5 – For Statement

All three control expressions are evaluated only once,before the loop starts. They must all result in numbers.

因此,在循环内修改i的值不会改变循环的运行方式.

For循环中的Python列表

For循环中的Python列表

我是Python的新手,并且有一个关于使用for循环更新列表的问题。这是我的代码:

urls = ['http://www.city-data.com/city/javascript:l("Abbott");','http://www.city-data.com/city/javascript:l("Abernathy");','http://www.city-data.com/city/Abilene-Texas.html','http://www.city-data.com/city/javascript:l("Abram-Perezville");','http://www.city-data.com/city/javascript:l("Ackerly");','http://www.city-data.com/city/javascript:l("Adamsville");','http://www.city-data.com/city/Addison-Texas.html']

for url in urls:
    if "javascript" in url:
        print url
        url = url.replace('javascript:l("','').replace('");','-Texas.html')
        print url

for url in urls:
    if "javascript" in url:
        url = url.replace('javascript:l("','-Texas.html')
print "\n"  
print urls

我使用了第一个for循环来检查语法是否正确,并且工作正常。但是第二个for循环是我要使用的代码,但是无法正常工作。如何使用第二个for循环全局更新列表,以便可以在for循环外打印或存储更新的列表?

for循环中的Python过滤器函数

for循环中的Python过滤器函数

filter 返回一个生成器,这就是为什么在将生成器传递给 list() 后才获得列表的原因,filter() 获取所有生成的元素并在列表中返回它们。

无需 for 和使用 nums = list(range(1,15)) result = [x for x in nums for i n range(2,5) if x % i == 0] 即可获得所需内容的方法:

df_log['time:timestamp'] = datetime.strptime(df_log['time:timestamp'],'%Y-%m-%d.%H:%M:%S')

这被称为列表推导式,它是构建这样的列表的非常有效且易读的方式。

,

过滤器是生成器。因此它使用表达式的惰性求值。 来自documentation:

当为生成器对象调用 __next__() 方法时,生成器表达式中使用的变量会被惰性求值(与普通生成器的方式相同)。

这意味着当您调用 list(nums) 时会计算 lambda 表达式,因为它在后台调用了 __next__() 方法。

所以在你的第二个例子中,它(我猜)总是用分隔符 4 过滤 3 次:

nums = filter(lambda x: x % 4 == 0)
nums = filter(lambda x: x % 4 == 0)
nums = filter(lambda x: x % 4 == 0)

也许那段代码能让你更好地理解。请注意,在调用 list() 时会计算表达式。如您所见,此处的循环不会改变结果。使用变量 i 会有所不同:

nums = list(range(1,15))
i = 2
nums = filter(lambda x: x % i == 0,nums)
i = 3
nums = filter(lambda x: x % i == 0,nums)
i = 4
nums = filter(lambda x: x % i == 0,nums)
print(list(nums)) # here i==4
### [4,8,12]

nums = list(range(1,50))
for i in range(2,5):
   nums = filter(lambda x: x % i == 0,nums)
i = 11
print(list(nums)) # here i==11
### [11,22,33,44]

另一种解决方案:

def f(x):
   for i in range(2,5):
      if x % i != 0:
         return False
   return True

nums = list(range(1,15))
nums = filter(f,nums)
print(list(nums))

for循环中的最终计数器?

for循环中的最终计数器?

我有这个代码:

    List<Runnable> r = new ArrayList<>();
    for(int i = 0; i < 10; i++) {
        r.add(new Runnable() {

            @Override
            public void run() {
                System.out.println(i);
            }
        });
    }

它显然不会编译,因为i在匿名类中需要使用final。但是我不能将它定下来,因为事实并非如此。你会怎么做?一种解决方案是复制它,但我认为可能会有更好的方法:

    List<Runnable> r = new ArrayList<>();
    for(int i = 0; i < 10; i++) {
        final int i_final = i;
        r.add(new Runnable() {

            @Override
            public void run() {
                System.out.println(i_final);
            }
        });
    }

编辑 只是为了清楚起见,为了示例,我在这里使用了Runnable,问题实际上是关于匿名类的,它可以是其他任何东西。

关于for循环中的Python循环计数器python for循环计数器的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于for-loop – 在循环执行时递减循环计数器、For循环中的Python列表、for循环中的Python过滤器函数、for循环中的最终计数器?的相关知识,请在本站寻找。

本文标签: