彩世界开奖app官网-彩世界平台官方网址(彩票平台)
做最好的网站
来自 计算机编程 2019-12-07 01:31 的文章
当前位置: 彩世界开奖app官网 > 计算机编程 > 正文

python高档-------python2.7教程学习【廖雪峰版】(四

迭代

  Iteration是Python编程中最重要的高级特性。迭代(Iteration):给定一个list或tuple,通过for循环来遍历这个list或tuple。故而,Python是通过for...in循环实现迭代的。

  list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:

1 >>> d = {'A': 1, 'B': 2, 'C': 3}
2 >>> for key in d:
3 ...    print(key)
4 ...
5 A
6 B
7 C
8 >>> 

  因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。

  默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()

  由于字符串也是可迭代对象,因此,也可以作用于for循环:

1 >>> for ch in 'ABC':
2 ...     print(ch)
3 ...
4 A
5 B
6 C

  因此,当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。

  那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

1 >>> from collections import Iterable
2 >>> isinstance('abc', Iterable) # str是否可迭代
3 True
4 >>> isinstance([1,2,3], Iterable) # list是否可迭代
5 True
6 >>> isinstance(123, Iterable) # 整数是否可迭代
7 False

  在for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:

1 >>> for x, y in [(1, 1), (2, 4), (3, 9)]:
2 ...     print(x, y)
3 ...
4 1 1
5 2 4
6 3 9

  任何可迭代对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环。

Python编程核心内容之二——切片、迭代和列表生成式,

  Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ

  最近太忙啦。很多事情需要自己处理,感觉时间不够用啊~~今后,博客更新时间可能会慢下来,哈哈,正所谓“人不为己,天诛地灭”嘛。嘿嘿,没这么回事,说笑的……好像有扯远了。OK,回归正题,下面将回到Python先~

  Python编程中,你如果要编写出很多有用的程序,必须掌握数据类型、语句和函数。对于Python编程,原则有二:一是代码不是越多越好,而是越少越好;二是代码不是越复杂越好,而是越简单越好。你还想“一行代码两块钱”。效率决定一切。

  下面来个例子(不然,全是文字,会晕~~~)【实现1,3,5,7,9,……99的列表】:

 1 #赚钱版代码
 2 >>>n = 1
 3 >>>L = []
 4 >>>while n <= 99:
 5 ...    L.append(n)
 6 ...    n = n   2
 7 ...
 8 >>>print(L)        #好多money,但老板不一定会给噢
 9 #略缩版代码
10 >>>L= list(range(1,100,2))
11 >>>print(L)
12 #终极版代码
13 >>>[x for x in range(1,100,2)]

  其实,上述代码涉及到的代码主要包括循环、range()、分片、列表生成式。通过例子,我们知道:Python提供了很多有用的高级特性,灵活运用这些特性,可以减少我们很多代码量,提高效率。

2017年6月9日17:57:55

列表生成式

  列表生成式作为Python编程的高级特性,可以简化不少代码量。列表生成式(List Comprehensions)是Python内置的非常简单却强大的可以用来创建list的生成式。

   举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):

1 >>> list(range(1, 11))
2 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

  但如果要生成[1x1, 2x2, 3x3, …, 10x10]怎么做?方法一是循环:

1 >>> L = []
2 >>> for x in range(1, 11):
3 ...    L.append(x * x)
4 ...
5 >>> L
6 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

  但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

1 >>> [x * x for x in range(1, 11)]
2 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

  写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

1 >>> [x * x for x in range(1, 11) if x % 2 == 0]
2 [4, 16, 36, 64, 100]

  列表生成式也可以使用两个变量来生成list:

1 >>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
2 >>> [k   '='   v for k, v in d.items()]
3 ['y=B', 'x=A', 'z=C']

  把一个list中所有的字符串变成小写:

1 >>> L = ['Hello', 'World', 'IBM', 'Apple']
2 >>> [s.lower() for s in L]
3 ['hello', 'world', 'ibm', 'apple']

  列表生成式不是真正的语句,而是看起来像循环的表达式,这是将它归为循环语句的原因。该功能很强大,但大多数情况下,直接使用循环和条件语句也能完成。然而,列表生成式的程序十分简洁,更加易读。

  下面来个例子:

1 L1 = ['Hello', 'World', 18, 'Apple', None]
2 L2= [s.lower() for s in L1 if isinstance(s,str)]

列表生成式

  列表生成式作为Python编程的高级特性,可以简化不少代码量。列表生成式(List Comprehensions)是Python内置的非常简单却强大的可以用来创建list的生成式。

   举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):

1 >>> list(range(1, 11))
2 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

  但如果要生成[1x1, 2x2, 3x3, …, 10x10]怎么做?方法一是循环:

1 >>> L = []
2 >>> for x in range(1, 11):
3 ...    L.append(x * x)
4 ...
5 >>> L
6 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

  但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

1 >>> [x * x for x in range(1, 11)]
2 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

  写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

1 >>> [x * x for x in range(1, 11) if x % 2 == 0]
2 [4, 16, 36, 64, 100]

  列表生成式也可以使用两个变量来生成list:

1 >>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
2 >>> [k   '='   v for k, v in d.items()]
3 ['y=B', 'x=A', 'z=C']

  把一个list中所有的字符串变成小写:

1 >>> L = ['Hello', 'World', 'IBM', 'Apple']
2 >>> [s.lower() for s in L]
3 ['hello', 'world', 'ibm', 'apple']

  列表生成式不是真正的语句,而是看起来像循环的表达式,这是将它归为循环语句的原因。该功能很强大,但大多数情况下,直接使用循环和条件语句也能完成。然而,列表生成式的程序十分简洁,更加易读。

  下面来个例子:

1 L1 = ['Hello', 'World', 18, 'Apple', None]
2 L2= [s.lower() for s in L1 if isinstance(s,str)]

Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 最近太忙啦。很多事情需要自己处理...

  列表生成式

  Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ

迭代

  Iteration是Python编程中最重要的高级特性。迭代(Iteration):给定一个list或tuple,通过for循环来遍历这个list或tuple。故而,Python是通过for...in循环实现迭代的。

  list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:

1 >>> d = {'A': 1, 'B': 2, 'C': 3}
2 >>> for key in d:
3 ...    print(key)
4 ...
5 A
6 B
7 C
8 >>> 

  因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。

  默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()

  由于字符串也是可迭代对象,因此,也可以作用于for循环:

1 >>> for ch in 'ABC':
2 ...     print(ch)
3 ...
4 A
5 B
6 C

  因此,当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。

  那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

1 >>> from collections import Iterable
2 >>> isinstance('abc', Iterable) # str是否可迭代
3 True
4 >>> isinstance([1,2,3], Iterable) # list是否可迭代
5 True
6 >>> isinstance(123, Iterable) # 整数是否可迭代
7 False

  在for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:

1 >>> for x, y in [(1, 1), (2, 4), (3, 9)]:
2 ...     print(x, y)
3 ...
4 1 1
5 2 4
6 3 9

  任何可迭代对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环。

  看完高级部分

切片

  切片是Python编程的高级特性之一。切片可以访问一定范围内的元素,通过冒号(:)【该冒号是英文版的】隔开两个索引实现。

  关于Python编程中的符号(比如冒号,逗号,括号……)都是英文版的【重要的事情说好多遍,因为自己平时编程也会时常出现这类错误】,否则程序编译会有Error,而且这种类型的错误还不好发现。因此,细节决定高度~~~

1 #切片的魔力
2 >>>L = [1,2,3,4,5,6,7,8,9,10]
3 >>>L[2:5]
4 3,4,5
5 >>>L[0:1]
6 1

  切片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在切片内的,而第二个则不包含在切片内。

  注:如果第一个索引是0,可以省略:

1 >>>L = [1,2,3,4,5,6,7,8,9,10]
2 >>>L[0:3]
3 1,2,3
4 >>>L[:3]
5 1,2,3

  既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片:

1 >>>L = [1,2,3,4,5,6,7,8,9,10]
2 >>>L[-2:]
3 9,10
4 >>>L[-2,-1]
5 9

  Python 3.x版本中,切片操作还支持步长

1 >>>L = [1,2,3,4,5,6,7,8,9,10]
2 >>>L[::1]
3 [1,2,3,4,5,6,7,8,9,10]
4 >>>L[0:10:2]
5 [1,3,5,7,9]
6 >>>L[1:10:5]
7 [2,7]

  tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:

1 >>> (0, 1, 2, 3, 4, 5)[:3]
2 (0, 1, 2)

  字符串’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

1 >>> 'ABCDEFG'[:3]
2 'ABC'
3 >>> 'ABCDEFG'[::2]
4 'ACEG'

  Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

  Python的切片非常灵活,一行代码就可以实现很多行循环才能完成的操作。

切片

  切片是Python编程的高级特性之一。切片可以访问一定范围内的元素,通过冒号(:)隔开两个索引实现。

1 #切片的魔力
2 >>>L = [1,2,3,4,5,6,7,8,9,10]
3 >>>L[2:5]
4 3,4,5
5 >>>L[0:1]
6 1

  切片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在切片内的,而第二个则不包含在切片内。

  注:如果第一个索引是0,可以省略:

1 >>>L = [1,2,3,4,5,6,7,8,9,10]
2 >>>L[0:3]
3 1,2,3
4 >>>L[:3]
5 1,2,3

  既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片:

1 >>>L = [1,2,3,4,5,6,7,8,9,10]
2 >>>L[-2:]
3 9,10
4 >>>L[-2,-1]
5 9

  Python 3.x版本中,切片操作还支持步长

1 >>>L = [1,2,3,4,5,6,7,8,9,10]
2 >>>L[::1]
3 [1,2,3,4,5,6,7,8,9,10]
4 >>>L[0:10:2]
5 [1,3,5,7,9]
6 >>>L[1:10:5]
7 [2,7]

  tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:

1 >>> (0, 1, 2, 3, 4, 5)[:3]
2 (0, 1, 2)

  字符串’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

1 >>> 'ABCDEFG'[:3]
2 'ABC'
3 >>> 'ABCDEFG'[::2]
4 'ACEG'

  Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

  Python的切片非常灵活,一行代码就可以实现很多行循环才能完成的操作。

都很重要,而且理解上也还好,切片是不是就相当于其他语言中的字符串截取函数,迭代就是循环啊,列表生成式是很灵活,很方便,生成器就是大大减少内存,当用户需要的时候在提取出来。

 1 #赚钱版代码
 2 >>>n = 1
 3 >>>L = []
 4 >>>while n <= 99:
 5 ...    L.append(n)
 6 ...    n = n   2
 7 ...
 8 >>>print(L)        #好多money,但老板不一定会给噢
 9 #略缩版代码
10 >>>L= list(range(1,100,2))
11 >>>print(L)
12 #终极版代码
13 >>>[x for x in range(1,100,2)]

加油,该看函数式编程了!

  最近太忙啦。很多事情需要自己处理,感觉时间不够用啊~~今后,博客更新时间可能会慢下来(但不能荒废了学习,要学习就得进行总结,哪怕借鉴前辈的学习资料),因此,无论闲忙,总是要学会总结。哈哈,正所谓“人不为己,天诛地灭”嘛。嘿嘿,没这么回事,说笑的……好像又扯远了。OK,回归正题,下面将回到Python先~

笔记:
1.掌握了Python的数据类型、语句和函数,基本上就可以编写出很多有用的程序了。
2.在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。
基于这一思想,我们来介绍Python中非常有用的高级特性,一行代码能实现的功能,决不写5行代码。
3.对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作
4.在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。
5.有了切片操作,很多地方循环就不再需要了。Python的切片非常灵活,一行代码就可以实现很多行循环才能完成的操作。
6.tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
7.如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。
8.在Python中,迭代是通过for ... in来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的
9.Python的for循环抽象程度要高于Java的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。
10.ist这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:
1.因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。
2.默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(),如果要同时迭代key和value,可以用for k, v in d.iteritems()。
3.字符串也是可迭代对象,因此,也可以作用于for循环
4.如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断
5.最后一个小问题,如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

  其实,上述代码涉及到的代码主要包括循环、range()、分片、列表生成式。通过例子,我们知道:Python提供了很多有用的高级特性,灵活运用这些特性,可以减少我们很多代码量,提高效率。

    >>> for i, value in enumerate(['A', 'B', 'C']):
    ...     print i, value
    ...
    0 A
    1 B
    2 C
6.上面的for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:

  下面来个例子(不然,全是文字,会晕~~~)【实现1,3,5,7,9,……99的列表】:

  迭代

  Python编程中,你如果要编写出很多有用的程序,必须掌握数据类型、语句和函数。对于Python编程,原则有二:一是代码不是越多越好,而是越少越好;二是代码不是越复杂越好,而是越简单越好。你还想“一行代码两块钱”。效率决定一切。

总结:

    >>> for x, y in [(1, 1), (2, 4), (3, 9)]:
    ...     print x, y
    ...
    1 1
    2 4
    3 9
7.任何可迭代对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环。
8.列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
9.for循环其实可以同时使用两个甚至多个变量,比如dict的iteritems()可以同时迭代key和value:
10.运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁。
1.生成器
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。
要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:
2.generator(生成器)也是可迭代的对象。
如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator:
3.最难理解的就是generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
4.generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。
要理解generator的工作原理,它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束。

  切片

  生成器

任务:

本文由彩世界开奖app官网发布于计算机编程,转载请注明出处:python高档-------python2.7教程学习【廖雪峰版】(四

关键词: Python 高级学习