1.请问Python中 for in是怎么用的
for..in语句是另一个循环语句,它迭代一个对象的序列,例如经历序列中的第一项。在后面的章节,我们将会看到更多关于序列的细节。现在,你需要知道的是一个序列只是一个有序的项目的集合。
例如 (保存为 for.py):
for i in range(1, 5): print(i)else: print('for循环结束')
输出:
1
2
3
4
for循环结束
它是如何工作的:
打印一个数字序列。我们使用内置的range函数生成这个数字序列。
我们在这里所做的是提供两个数字,range返回一个从第一个数字到第二个数字的一个数字序列。例如,range(1,5)给出序列[1, 2, 3, 4]。默认情况下,range 步距取为1。如果我们提供第三个数字,range那么它变成了步距。例如range(1,5,2)得到[1,3]。请记住,范围扩展到第二号码,即它不包括第二个数字。
注意,range()生成一个数字序列,当for循环请求下一个项目时,它一次只生成一个数字。如果你想立刻看到完整的数字序列,使用list(range())。list(列表)将在[数据结构章]中解释。
for循环然后遍历这个范围,for i in range(1,5)相当于 for i in [1, 2, 3, 4],这就像把序列中的每一个数(或对象)分配给i,一次一个,然后为每个i值执行该语句块。在本例中,在语句块中我们只是打印它的值。
记住,else部分是可选的。当包括它时,除非遇到[break][#中断)语句,当for循环结束时,它执行一次。
记住,for..in循环可以作用于任何序列。在这里,我们对一个由内建的range函数生成的一个数字列表,但是一般来说,我们可以使用任何种类对象的任何类型的序列!在后面的章节,我们将详细探讨这个想法。
C/C++/Java/C#程序要注意:
Python的for循环完全不同于C/c++的for循环。c#程序员会注意到,在Python中for循环类似于c中的foreach循环c#。Java程序员会注意到,同样类似于在Java 1.5中的to for (int i : IntArray)。
在C/c++中,如果你想写for (int i = 0; i < 5; i++),那么在Python中你只要写 for i in range(0,5)。正如您可以看到的,在Python中for循环更简单,更富有表现力且不易出错。
2.python中的for in是什么意思
1、python中的for in是一个语句循环固定格式;
2、Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言;
3、Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。
扩展资料:
python介绍:
Python的设计目标之一是让代码具备高度的可阅读性。其设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像其他的语法那样经常有特殊情况和意外。
Python采用动态类型系统。在编译的时候,Python不会检查对象是否拥有被调用的方法或者属性,而是直至运行时,才做出检查。所以操作对象时可能会抛出异常。不过,虽然Python采用动态类型系统,其同时也是强类型的。Python禁止没有明确定义的操作,比如数字加字符串。
参考资料来源:百度百科-Python
3.python中的for in的相关问题
A.因为已经引入了sqrt函数,如果在自己的空间中执行 sqrt=1 '把sqrt当成了一个变量,再运行sqrt(4)会出错
例子中 exec运行代码 在Scope空间中 sqrt是个变量,赋值1,如果没有in scope,那么exce运行空间就是本空间,再次sqrt(4)就会出错。
对比:
a=1234
exec 'a=4321'
a
4321
和代码:
a=1234
b={}
exec 'a=4321' in b
a
1234
B:print [x*x for x in range(10) if x % 3 == 0]
这里range(10)产生0,1,2~8,9 这10个数字
后面添加了条件x % 3 ==0,就是判断 x除以3的余数 等于0, 筛选出0、3、6、9
传递给x*x,就产生了一个列表:[0,9,36,81]
4.python for in原理
怎么给你说呢? 这些牵涉到Iterables和Generator的定义. 先讲Iterables吧, 在Python中很多东西都可以使用for。
in。来iterable,比如list, strings, 和files. 这些iterables是方便,你可多次经行处理,因为你在内存中存储的所有值. 下面是个例子: >>> mylist = [1, 2, 3]>>> for i in mylist:.. print(i)123>>> mylist = [x*x for x in range(3)]>>> for i in mylist:。
print(i)014然后是Generator. 广义上将Generator也是个Iterator, 但是你不能reset, 也就是说你只能历遍一次.因为内存存储的问题,当你使用yield的之前, 内存中存储的是你需要的值,当你调用完之后内存中存储的是你的下一个需要的值. 换句话说你如果用Generator内存的使用比较少.是一个常量. 下面是个例子: >>> mygenerator = (x*x for x in range(3))>>> for i in mygenerator:。 print(i)014两个例子请注意括号的不同. yield关键字工作原理与上面所说的Generator类似. 原理也一样,这也就是为什么当你得到最后一个值后,尝试着调用next()会出错的问题. 或者说长度为0, 因为此时内存中没有存值. 如果你想处理完,再次历遍输入内容. 给你介绍个比较简洁的方法. y = FunctionWithYield()y, y_backup = tee(y)for x in y: print(x)for x in y_backup: print(x) tee() 函数,生成了一个列表,存储了所有的输入值. 题外话: 如果你学过Python相比你可能知道range和xrange两个不同的关键字. 例如在Python 2.x 中, 代码: for i in range(1000): pass会导致生成一个 1000 个元素的 List,而代码: for i in xrange(1000): pass则不会生成一个 1000 个元素的 List,而是在每次迭代中返回下一个数值,内存空间占用很小。
因为 xrange 不返回 List,而是返回一个类似的iterable 对象。 网上曾经有人尝尝着模拟range和xrange, 猜测xrange中包含yield的函数.实现结果也符合猜想. 结合上面所说的 这也就是为什么xrange更加高效.至于yield内存使用方法, 确实没有深究. 所以不能给你提供更多信息. 但想必也已经解决了你的部分疑问.。
5.python for in原理
怎么给你说呢?
这些牵涉到Iterables和Generator的定义.
先讲Iterables吧, 在Python中很多东西都可以使用for。in。来iterable,比如list, strings, 和files. 这些iterables是方便,你可多次经行处理,因为你在内存中存储的所有值.
下面是个例子:
>>> mylist = [1, 2, 3]>>> for i in mylist:
.. print(i)
1
2
3
>>> mylist = [x*x for x in range(3)]
>>> for i in mylist:
print(i)
0
1
4然后是Generator. 广义上将Generator也是个Iterator, 但是你不能reset, 也就是说你只能历遍一次.因为内存存储的问题,当你使用yield的之前, 内存中存储的是你需要的值,当你调用完之后内存中存储的是你的下一个需要的值. 换句话说你如果用Generator内存的使用比较少.是一个常量.
下面是个例子:
>>> mygenerator = (x*x for x in range(3))
>>> for i in mygenerator:
print(i)
0
1
4两个例子请注意括号的不同.
yield关键字工作原理与上面所说的Generator类似. 原理也一样,这也就是为什么当你得到最后一个值后,尝试着调用next()会出错的问题. 或者说长度为0, 因为此时内存中没有存值.
如果你想处理完,再次历遍输入内容. 给你介绍个比较简洁的方法.
y = FunctionWithYield()
y, y_backup = tee(y)
for x in y:
print(x)
for x in y_backup:
print(x)
tee() 函数,生成了一个列表,存储了所有的输入值.
题外话: 如果你学过Python相比你可能知道range和xrange两个不同的关键字. 例如在Python 2.x 中, 代码:
for i in range(1000): pass会导致生成一个 1000 个元素的 List,而代码:
for i in xrange(1000): pass则不会生成一个 1000 个元素的 List,而是在每次迭代中返回下一个数值,内存空间占用很小。因为 xrange 不返回 List,而是返回一个类似的iterable 对象。
网上曾经有人尝尝着模拟range和xrange, 猜测xrange中包含yield的函数.实现结果也符合猜想.
结合上面所说的 这也就是为什么xrange更加高效.
至于yield内存使用方法, 确实没有深究. 所以不能给你提供更多信息. 但想必也已经解决了你的部分疑问.
6.python中的for in的相关问题
A.因为已经引入了sqrt函数,如果在自己的空间中执行 sqrt=1 '把sqrt当成了一个变量,再运行sqrt(4)会出错例子中 exec运行代码 在Scope空间中 sqrt是个变量,赋值1,如果没有in scope,那么exce运行空间就是本空间,再次sqrt(4)就会出错。
对比:a=1234exec 'a=4321'a4321和代码:a=1234b={}exec 'a=4321' in ba1234B:print [x*x for x in range(10) if x % 3 == 0]这里range(10)产生0,1,2~8,9 这10个数字后面添加了条件x % 3 ==0,就是判断 x除以3的余数 等于0, 筛选出0、3、6、9传递给x*x,就产生了一个列表:[0,9,36,81]。
转载请注明出处代码入门网 » pythonforin