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 ,如需转载请自行联系原作者




相关文章
|
1月前
|
Java 程序员 C++
Python 面向对象详解!
本文详细介绍了Python中的面向对象编程(OOP),包括类、对象、继承、封装、多态和抽象等核心概念。通过具体示例,解释了如何使用类定义对象的属性和方法,以及如何通过继承实现代码重用。文章还探讨了封装和多态的重要性,并介绍了私有属性和抽象类的使用方法。最后,总结了OOP的四大支柱:封装、抽象、继承和多态,强调了这些概念在Python编程中的应用。适合Java程序员扩展Python编程知识。
70 2
|
1月前
|
Python
Python面向对象(2)
【10月更文挑战第14天】
Python面向对象(2)
|
3月前
|
Python
你真的会面向对象吗!解密Python“魔术方法”
你真的会面向对象吗!解密Python“魔术方法”
40 0
|
1月前
|
设计模式 程序员 C语言
Python面向对象
【10月更文挑战第13天】
Python面向对象
|
1月前
|
存储 算法 数据处理
Python函数式编程
【10月更文挑战第12天】函数式编程是一种强大的编程范式,它可以帮助我们编写更加简洁、易读、可维护和高效的代码。虽然 Python 不是一种纯粹的函数式编程语言,但它提供了许多支持函数式编程的特性和功能。通过深入了解和掌握函数式编程的概念和技巧,我们可以在 Python 编程中更好地应用函数式编程的理念,提高我们的编程水平和代码质量。
15 2
|
1月前
|
存储 大数据 数据处理
Python 中的列表推导式与生成器:特性、用途与区别
Python 中的列表推导式与生成器:特性、用途与区别
24 2
|
2月前
|
前端开发 Python
Python编程的面向对象有哪些(二)
Python编程的面向对象(二)—类的多态
|
2月前
|
IDE Java 开发工具
Python类与面向对象
Python类与面向对象
|
2月前
|
Python
Python函数式编程-Filter
Python函数式编程-Filter
|
2月前
|
机器学习/深度学习 人工智能 安全
python和Java的区别以及特性
Python:适合快速开发、易于维护、学习成本低、灵活高效。如果你需要快速上手,写脚本、数据处理、做点机器学习,Python就是你的首选。 Java:适合大型项目、企业级应用,性能要求较高的场景。它类型安全、跨平台能力强,而且有丰富的生态,适合更复杂和规模化的开发。
53 3
下一篇
无影云桌面