Python(八)高级特性

迭代(iteration)

判断一个对象可迭代:

1.可以通过for循环来遍历

2.通过collections模块的iterable类型判断

如果要对 list 实现类似 Java 那样的下标循环怎么办:

python内置的枚举方法enumerate,把一个 list 变成索引-元素对

列表生成式

for循环输出结果(输出1-10之间所有整数求平方之后的结果):

In [41]: [i**2 for i in range(1,11)]
Out[41]: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
for循环+if语句(输出1-10之间所有整数求平方,再跟2取余为0的结果):
In [42]: [i**2 for i in range(1,11) if (i**2)%2==0]
Out[42]: [4, 16, 36, 64, 100]
for循环+for循环(输出'abc'和'123'的全排列):
In [46]: [i+j for i in "abc" for j in "123"]
Out[46]: ['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']

原文地址:http://blog.51cto.com/13548905/2055434

时间: 2024-08-17 05:54:35

Python(八)高级特性的相关文章

python之高级特性

掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了. 比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: L = [] n = 1 while n <= 99: L.append(n) n = n + 2 取list的前一半的元素,也可以通过循环实现. 但是在Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好. 基于这一思想,我们来介绍Python中非常有用的高级特性,1行代码能实现的功能,决不写5行代码.请始终

python函数高级特性

掌握了Python的数据类型.语句.函数,基本可以编写出很多有用的程序了.但是Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好.基于这一思想,我们来介绍python中非常有用的高级特性,1行代码能实现的功能绝不用5行代码,请始终牢记,代码越少,开发效率越高. 切片(Slice) 取一个list或tuple的部分元素是非常常见的操作,比如,一个list如下: L=['Micheal','Sarah','Bob','Jack'] 当我们要取前N个元素,使用循环操作很

Python的高级特性有哪些?

本文和大家分享的主要是python开发中的一些新特性,一起来看看吧,希望对大家有所帮助. 列表生成式(List Comprehensions) 切片和迭代就不说了,这里直接先看一下列表生成式吧,从名字就能大概猜出这是生成列表的一些方法,比如:如何生成 [1*1, 2*2, ... ,10*10] ?可以用循环不断向列表尾部添加元素,如果使用 pythonic 的方法,也就是列表生成式,则是: >>> [x * x for x in range(1, 11)] [1, 4, 9, 16,

Python的高级特性10:无聊的@property

@property装饰器其实有点无聊,单独拿出来作为一个知识点其实没必要,尽管它可以将方法变成属性,让get和set方法更好用,但是,它破坏了python的简洁(不是代码的简洁而是指语法上). 下面来说明为什么我会这么说. 首先,看一个使用property. class Student(object): @property def testname(self): return self.name @testname.setter def testname(self,name): self.nam

Python的高级特性11:拓展基本数据类型(dict)

字典的创建有两种方式,如果出现In [26]这样的赋值方式就会报错. In [17]: s['name'] = 'alex' In [18]: s['sex'] = 'male' In [19]: s Out[19]: {'name': 'alex', 'sex': 'male'} In [20]: s = {'name':'alex','sex':'male'} In [21]: s Out[21]: {'name': 'alex', 'sex': 'male'} In [22]: t = {

python的高级特性3:神奇的__call__

__call__是一个很神奇的特性,只要某个类型中有__call__方法,,我们可以把这个类型的对象当作函数来使用. 也许说的比较抽象,举个例子就会明白. In [107]: f = abs In [108]: f(-10) Out[108]: 10 In [109]: dir(f) Out[109]: ['__call__', '__class__', '__delattr__', '__dir__', ...] 上例中的f对象指向了abs类型,由于f对象中有__call__方法,因此f(-1

Python的高级特性1:容易忽略的不可变类型

python中有一些容易忽略的不可变类型(str,integer,tuple,None) #错误演示 In [45]: def demo(lst=[]): ....: lst.append("hello") ....: return lst ....: In [46]: demo() Out[46]: ['hello'] In [47]: demo() Out[47]: ['hello', 'hello'] 廖雪峰的python教程有提到这一块,但并没有太细致.在这里,由于lst是一个

Python的高级特性2:列表推导式和生成器

一.列表推导式 1.列表推导式是颇具python风格的一种写法.这种写法除了高效,也更简短. In [23]: ['i:el' for i,el in enumerate(["one","two","three"])] Out[23]: ['i:el', 'i:el', 'i:el'] enumerate是内建函数,可以让列表获得“下标”的属性.而如果不用列表推导式,上例需要这么写 In [24]: lst = ["one",

Python的高级特性之切片、迭代、列表生成式、生成器

切片 切片就是获取一个list.tuple.字符串等的部分元素 1 l = range(100) 2 #取[0,5)元素 3 print(l[:5]) #[0, 1, 2, 3, 4] 4 #在[0,99]中每隔10个元素取一个 5 print( l[::10]) #[0, 10, 20, 30, 40, 50, 60, 70, 80, 90] 6 #取最后五个元素 7 print( l[-5 : ]) #[95, 96, 97, 98, 99] 8 9 str = "www.genekang.

Python的高级特性7:使用__slots__真的能省很多内存

在伯乐在线上看到了这篇文章,用Python的 __slots__ 节省9G内存,于是想测试下,对单个类,用__slots__节省内存效果会不会明显. 看完这个例子后,我们也会明白__slots__是用来干嘛的. :import sys :class test(object): : def __init__(self,name): : self.name = name : : :class test2(object): : __slots__ = ["name"] : def __ini