python高级特性、函数式编程、面向对象

简介:

切片

list和tuple、字符串。

L[:]

L[1:4]

L[-1]

str[::2]



迭代

python的迭代:只要是可迭代对象都可以,和下标没关系。

判断一个对象是否是可迭代的,通过collections模块中的Iterable类型判断。

1
2
3
4
5
6
7
from  collections  import  Iterable
 
isinstance ( 'abc' , Iterable)
 
isinstance ([ 1 , 2 , 3 ], Iterable)
 
isinstance ( 123 , Iterable)  - -  false

对list实现下标循环,使用python的enumerate函数把list变成索引-元素对

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for  i, value  in  enumerate ([ 'a' 'b' 'c' ]):
     print (i, value)
     
0  a
1  b
2  c   
 
 
# 同时引用两个变量
for  x, y  in  [( 1 1 ), ( 2 4 ), ( 3 9 )]:
     print (x, y)
     
1  1
2  4
3  9


列表生成式 -- List Comprehensions

用来创建list的生成式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
list ( range ( 1 , 11 ))
[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
 
[x  *  for  in  range ( 1 11 )]
[ 1 4 9 , ...]
 
# 列表生成式中的if判断,选出符合条件的
[x  *  for  in  range ( 1 11 if  %  2  = =  0  ]
4 16 36 64 100 ]
 
[m + for  in  'abc'  for  in  'xyz' ]
[ 'ax' 'ay' 'az' 'bx' 'by' 'bz' 'cx' 'cy' 'cz' ]
 
 
# 使用列表生成式,列出目录下的所有文件和目录
import  os
[d  for  in  os.listdir( '.' )]
 
# 列表生成式使用dict生成list
=  { 'x' : 'a' 'y' : 'b' 'z' : 'c' }
[k  +  '='  +  for  k, v  in  d.items()]
[ 'y=b' 'x=a' 'z=c' ]


生成器 -- 解决列表生成式的内存溢出问题。

在循环过程中不断推算后续的元素,不必创建完整的list,节省内存。一边循环一边计算 -- 生成器 -- generator

正常的做法是:在创建了一个generator后,使用for来迭代。

定义generator的另一种方法:在函数定义中包含yield关键字。

1
2
3
4
5
6
7
def  fib( max ):
     n, a, b  =  0 0 1
     while  n <  max :
         yield  b
         a, b  =  b, a + b
         =  n + 1
     return  'done'

该generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行从上次返回的yield语句继续执行。












本文转自ting2junshui51CTO博客,原文链接:http://blog.51cto.com/ting2junshui/1755266 ,如需转载请自行联系原作者




相关文章
|
2月前
|
Python
你真的会面向对象吗!解密Python“魔术方法”
你真的会面向对象吗!解密Python“魔术方法”
25 0
|
4月前
|
Python
Python进阶第一篇(Python的面向对象)
Python进阶第一篇(Python的面向对象)
|
7天前
|
前端开发 Python
Python编程的面向对象(二)—类的多态
Python编程的面向对象(二)—类的多态
14 7
|
6天前
|
IDE Java 开发工具
Python类与面向对象
Python类与面向对象
|
18天前
|
Python
Python函数式编程-Filter
Python函数式编程-Filter
|
2月前
|
Python
Python函数式编程:你真的懂了吗?理解核心概念,实践高阶技巧,这篇文章带你一次搞定!
【8月更文挑战第6天】本文介绍了Python中的函数式编程,探讨了高阶函数、纯函数、匿名函数、不可变数据结构及递归等核心概念。通过具体示例展示了如何利用`map()`和`filter()`等内置函数处理数据,解释了纯函数的一致性和可预测性特点,并演示了使用`lambda`创建简短函数的方法。此外,文章还强调了使用不可变数据结构的重要性,并通过递归函数实例说明了递归的基本原理。掌握这些技巧有助于编写更清晰、模块化的代码。
24 3
|
2月前
|
安全 算法 Go
Python面向对象的三大特性
python面向对象编程(OOP)的三大特性是封装、继承和多态。这些特性共同构成了OOP的基础,使得软件设计更加灵活、可维护和可扩展。
23 3
|
3月前
|
数据采集 Java C语言
Python面向对象的高级动态可解释型脚本语言简介
Python是一种面向对象的高级动态可解释型脚本语言。
26 3
|
2月前
|
安全 Python
九:《Python基础语法汇总》— 面向对象
本篇文章讲解了何为类何为对象,以及魔法方法(具有特殊功能的函数)和面向对象编程的三个特性:封装;继承;多态
13 0
|
3月前
|
存储 分布式计算 索引
Python函数式编程入门窥探
Python本身不是一门函数式编程语言,但是它参考了一些函数式编程语言很好的地方,除了可以写出更可读的代码外。还能用它来实现一些特定功能,本身也提供了强大的注解系统和函数和对象之间的灵活调用。
下一篇
无影云桌面