关于for循环中的Python循环计数器和pythonfor循环计数器的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于for-loop–在循环执行时递减循环计数器、For循环中的Pytho
关于for循环中的Python循环计数器和python for循环计数器的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于for-loop – 在循环执行时递减循环计数器、For循环中的Python列表、for循环中的Python过滤器函数、for循环中的最终计数器?等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- for循环中的Python循环计数器(python for循环计数器)
- for-loop – 在循环执行时递减循环计数器
- For循环中的Python列表
- for循环中的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 i = 1,100 do print (i) i = i - 1 end
但它实际上只是打印1-100系列.这是设计的吗?如果是这样,我如何减少正在运行的循环的计数器(例如,因为当前循环被取消资格并且应该再次运行)?
解决方法
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列表
我是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过滤器函数
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循环中的最终计数器?
我有这个代码:
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循环中的最终计数器?的相关知识,请在本站寻找。
本文标签: