python for 步长循环 步长一定要为整数吗

Python 基础教程
Python for 循环语句
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的语法格式如下:
for iterating_var in sequence:
statements(s)
for letter in 'Python':
print '当前字母 :', letter
fruits = ['banana', 'apple', 'mango']
for fruit in fruits:
print '当前水果 :', fruit
print &Good bye!&
以上实例输出结果:
当前字母 : P
当前字母 : y
当前字母 : t
当前字母 : h
当前字母 : o
当前字母 : n
当前水果 : banana
当前水果 : apple
当前水果 : mango
通过序列索引迭代
另外一种执行循环的遍历方式是通过索引,如下实例:
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print '当前水果 :', fruits[index]
print &Good bye!&
以上实例输出结果:
当前水果 : banana
当前水果 : apple
当前水果 : mango
以上实例我们使用了内置函数 len() 和 range(),函数 len() 返回列表的长度,即元素的个数。
range返回一个序列的数。
循环使用 else 语句
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。
for num in range(10,20):
for i in range(2,num):
if num%i == 0:
print '%d 等于 %d * %d' % (num,i,j)
print num, '是一个质数'
以上实例输出结果:
10 等于 2 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是一个质数
18 等于 2 * 9
19 是一个质数
更多实例:
7个月前 (02-27)
记住登录状态
重复输入密码python中关于for循环的碎碎念
作者:欣仔
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了python中关于for循环使用过程中的碎碎念,需要的朋友可以参考下
为什么要挑战自己在代码里不写for loop?因为这样可以迫使你去使用比较高级、地道的语法或库。文中以python为例子,讲了不少大家其实在别人的代码里都见过、但自己很少用的语法。
这是一个挑战。我要你避免在任何情况下写for循环。同样的,我也要你找到一种场景——除了用for循环以外,用其他方法写都太难。请分享你的发现,我非常想听到这些
距离我开始探索超棒的Python语言特性已经有一段时间了。一开始,这只是我给自己的一个挑战,练习使用更多的语言特性来替代我从其他编程语言那里所学到的。但是事情渐渐变得更有趣了!代码不止变得更简短整洁,而且看起来更加结构化和有规律,在这篇文章中我将更多地介绍这些好处。
首先,让我们退一步看看在写一个for循环背后的直觉是什么:
1.遍历一个序列提取出一些信息
2.从当前的序列中生成另外的序列
3.写for循环已经是我的第二天性了,因为我是一个程序员
幸运的是,Python里面已经有很棒的工具帮你达到这些目标!你需要做的只是转变思想,用不同的角度看问题。
不到处写for循环你将会获得什么
1.更少的代码行数
2.更好的代码阅读性
3.只将缩进用于管理代码文本
Let's see the code skeleton below:
看看下面这段代码的构架:
这个例子使用了多层嵌套的代码,这是非常难以阅读的。我在这段代码中发现它无差别使用缩进把管理逻辑(with, try-except)和业务逻辑(for, if)混在一起。如果你遵守只对管理逻辑使用缩进的规范,那么核心业务逻辑应该立刻脱离出来。
“扁平结构比嵌套结构更好” – 《Python之禅》
为了避免for循环,你可以使用这些工具
1. 列表解析/生成器表达式
看一个简单的例子,这个例子主要是根据一个已经存在的序列编译一个新序列:
result = []
for item in item_list:
new_item = do_something_with(item)
result.append(item)
如果你喜欢MapReduce,那你可以使用map,或者Python的列表解析:
result = [do_something_with(item) for item in item_list]
同样的,如果你只是想要获取一个迭代器,你可以使用语法几乎相通的生成器表达式。(你怎么能不爱上Python的一致性?)
result = (do_something_with(item) for item in item_list)
站在更高阶、更函数化的变成方式考虑一下,如果你想映射一个序列到另一个序列,直接调用map函数。(也可用列表解析来替代。)
doubled_list = map(lambda x: x * 2, old_list)
如果你想使一个序列减少到一个元素,使用reduce
from functools import reduce
summation = reduce(lambda x, y: x + y, numbers)
另外,Python中大量的内嵌功能可/会(我不知道这是好事还是坏事,你选一个,不加这个句子有点难懂)消耗迭代器:
&&& a = list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
&&& all(a)
&&& any(a)
&&& max(a)
&&& min(a)
&&& list(filter(bool, a))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
&&& set(a)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
&&& dict(zip(a,a))
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
&&& sorted(a, reverse=True)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
&&& str(a)
'[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]'
&&& sum(a)
3. 抽取函数或者表达式
上面的两种方法很好地处理了较为简单的逻辑,那更复杂的逻辑怎么办呢?作为一个程序员,我们会把困难的事情抽象成函数,这种方式也可以用在这里。如果你写下了这种代码:
results = []
for item in item_list:
# condition
# processing
# calculation
results.append(result)
显然你赋予了一段代码太多的责任。为了改进,我建议你这样做:
def process_item(item):
# condition
# processing
# calculation
return result
results = [process_item(item) for item in item_list]
嵌套的for循环怎么样?
results = []
for i in range(10):
for j in range(i):
results.append((i, j))
列表解析可以帮助你:
results = [(i, j)
for i in range(10)
for j in range(i)]
如果你要保存很多的内部状态怎么办呢?
# finding the max prior to the current item
a = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]
results = []
current_max = 0
for i in a:
current_max = max(i, current_max)
results.append(current_max)
# results = [3, 4, 6, 6, 6, 9, 9, 9, 9, 9]
让我们提取一个表达式来实现这些:
def max_generator(numbers):
current_max = 0
for i in numbers:
current_max = max(i, current_max)
yield current_max
a = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]
results = list(max_generator(a))
“等等,你刚刚在那个函数的表达式中使用了一个for循环,这是欺骗!”
好吧,自作聪明的家伙,试试下面的这个。
4. 你自己不要写for循环,itertools会为你代劳
这个模块真是妙。我相信这个模块能覆盖80%你想写下for循环的时候。例如,上一个例子可以这样改写:
from itertools import accumulate
a = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]
resutls = list(accumulate(a, max))
另外,如果你在迭代组合的序列,还有product(),permutations(),combinations()可以用。
1.大多数情况下是不需要写for循环的。
2.应该避免使用for循环,这样会使得代码有更好的阅读性。
1.再看一遍你的代码,找出任何以前凭直觉写下for循环的地方,再次思考一下,不用for循环再写一遍是不是有意义的。
2.分享你很难不使用for循环的例子。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具1005人阅读
python(5)
#第一个:求 50 - 100 之间的质数
import math
for i in range(50, 100 + 1):
&&& for j in range(2, int(math.sqrt(i)) + 1):
&&&&&&& if i % j == 0:
&&&&&&&&&&& break
&&&&&&& print i
#第二个:把else的位置与if处于同一缩进。
import math
for i in range(50, 100 + 1):
&&& for j in range(2, int(math.sqrt(i)) + 1):
&&&&&&& if i % j == 0:
&&&&&&&&&& break
&&&&&&& else:
&&&&&&&&&& print i
#第三个:在else后加一个break语句。
import math
for i in range(50, 100 + 1):
&&& for j in range(2, int(math.sqrt(i)) + 1):
&&&&&&& if i % j == 0:
&&&&&&&&&&& break
&&&&&&& else:
&&&&&&&&&&& print i
&&&&&&&&&&& break
###idea###
for语句是python中的循环控制语句。可用来遍历某一对象,还具有一个附带的可选的else块,主要用于处理for语句中包含的break语句。
如果for循环未被break终止,则执行else块中的语句。
break 在需要时终止for循环
continue 跳过位于其后的语句,开始下一轮循环。
for语句的格式如下:
&&&for && in &对象集合&:
... && if &条件&:
... &&&&&& break
... && if &条件&:
... &&&&&& continue
... && &其他语句&
#关于第一个程序
在这里,我解释一下为何导入math模块:导入math模块就是为了开方。
如果导入了math模块,然后对 i 进行开方,可以减少运算次数。
求一个数是否质数。只需对它进行这样的运算:
&&& 将这个数n,循环与 2 到 这个n的开平方 进行相除
如果这个区间内的所有整数不能整除n,则n为质数。
这样,就节省了运算 ‘大于n的开平方 小于n’ 之间这段运算的时间。
第二,我解释一下那‘+1’:
int(math.sqrt(i)) 输出的是比 i的开平方 小 的最大整数。
&&& 比如说:math.sqrt(51) 结果比7大一点,而 int(math.sqrt(51)) 输出的是7
而且在range(m, n)这里,range()函数产生的是一个从 m至n-1的整数列表,因而需要‘+1’,使运算完整。
& 顺便提一下range()函数。
&&& range([start,] stop [, step])
&&& # start& 可选参数,起始数
&&& #stop&& 终止数,如果 range 只有一个参数x,则产生一个包含 0 至 x-1 的整数列表
&&& #step&& 可选参数,步长
#第二个程序
else那行不对,如果else放在那个地方的话,一旦有某个数遇到不能整除自己的数,就会输出i,直道找到一个整除自己等于0的数。那样就会连续输出这个数。
例如:i = 77,他不是质数,但是也会连续输出5次77,懂不?
只不过,只是自己不明白当else与if位于同一缩进的话,它是怎样运行的。
你解释得很详细,用‘茅塞顿开'来形容一点都不过分。
而且,我必觉得画图是理解循环一个非常好的办法。
原帖地址(LZ是本人):/f?kz=
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:525339次
积分:7415
积分:7415
排名:第3129名
原创:134篇
转载:617篇
评论:20条
(45)(24)(27)(21)(46)(57)(24)(11)(13)(14)(14)(31)(19)(105)(57)(33)(13)(39)(18)(4)(26)(9)(1)(1)(2)(2)(1)(3)(3)(5)(3)(8)(9)(14)(5)(14)(16)(21)(3)(1)(1)(2)(1)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'请问 为什么for循环不用声明变量【python吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:152,577贴子:
请问 为什么for循环不用声明变量收藏
numbers=range(10)for number in numbers:
print number这样是对的换成while就错了while 打印1-100要加上一句x+=1(我知道原理是让X的值递增)但是for就不用加那句看书刚看到这里 书也不解释 不懂
python_总监级名师全程面授,项目实战案例式教学,企业需求无缝对接,助你无忧就业!python,报名即送树莓设备,0基础23周快速实现高薪就业,名额有限,欲报从速.点击抢座
楼上说的很清楚简洁,意思是使用枚举方法,列出循环出现的所有可能结果[结果为range(10)]
for语句基本上是一种遍历型的循环,因为它会依次对某个序列中全体元素进行遍历,遍历完所有元素之后便终止循环。
这里的for跟C,C++中的for循环是不一样的,它更像java里的foreach语句,是用来遍历对象的。
登录百度帐号推荐应用

我要回帖

更多关于 python 步长 的文章

 

随机推荐