标签:
Python2入门(2)
九.List tuple dict set
创建List:L = [‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘]
显示List:L[0]
遍历List:print (L)和for循环
更新List:append()和insert()和直接赋值
删除List:pop()和pop(n)
List特点:
可以添加删除
1 2 3 4 5 6 | Li = [‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘] print (Li) for name in Li: print(name) |
创建Tuple:Tu = (‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘)
显示Tuple:Tu[0]
遍历Tuple:print (Tu)和for循环
更新Tuple:不可以更新
删除Tuple:不可以删除
Tuple特点:不可以改变,如果创建之后一个元素的Tuple时,要加","
1 2 3 4 5 6 | Tu = (‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘) print (Tu) for name in Tu: print(name) |
创建Dict:Di = {‘Adam‘:100, ‘Lisa‘:90, ‘Bart‘:93, ‘Gechong‘:100, ‘Kongming‘:100}
显示Dict:Di[‘Adam‘]和Di.get(‘Adam‘)
遍历Dict:print(Di)和for循环
1 2 3 4 | Di = {‘Adam‘:100, ‘Lisa‘:90, ‘Bart‘:93, ‘Gechong‘:100, ‘Kongming‘:100} for key in Di: print (key) |
1 2 3 4 | Di = {‘Adam‘:100, ‘Lisa‘:90, ‘Bart‘:93, ‘Gechong‘:100, ‘Kongming‘:100} for key in Di: print (Di[key]) |
更新Dict:对应位置赋值即可
删除Dict:
Dict特点:
1:查找速度快
2:浪费空间
3:key不可以重复,且不可变
4:数据无序排放
创建set:s = set([‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘])
显示set:
1 2 3 4 5 6 | s = set([‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘]) if ‘Test‘ in s: print (‘Test‘) else: print (‘No‘) |
遍历set:print (s)
1 2 3 4 | s = set([‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘]) for name in s: print (name) |
更新set:s.add()
删除set:s.remove()
set和dict的唯一区别仅在于没有存储对应的value,类似集合。
十.判断和循环
判断:
age = 20
if age >= 18:
print ‘your age is‘, age
print ‘adult‘
Elif ***:
Else:
注意不要少写了冒号:
循环:
names = [‘Michael‘, ‘Bob‘, ‘Tracy‘]
for name in names:
print name
range()函数,可以生成一个整数序列
sum = 0
for x in range(101):
sum = sum + x
print sum
while ***:
***
十一.函数
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError(‘bad operand type‘)
if x >= 0:
return x
else:
return -x
定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体。
数据类型检查可以用内置函数isinstance实现。
Python的函数返回多值其实就是返回一个tuple:
def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
这样我们就可以同时获得返回值:
>>> x, y = move(100, 100, 60, math.pi / 6)>>> print x, y151.961524227 70.0
可变参数调用的时候,需要先组装出一个list或tuple:
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
nums = [1, 2, 3]
Print calc(*nums)
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def person(name, age, **kw):
print ‘name:‘, name, ‘age:‘, age, ‘other:‘, kw
person(‘Bob‘, 35, city=‘Beijing‘)
person(‘Adam‘, 45, gender=‘M‘, job=‘Engineer‘)
输出:
name: Bob age: 35 other: {‘city‘: ‘Beijing‘}
name: Adam age: 45 other: {‘gender‘: ‘M‘, ‘job‘: ‘Engineer‘}
请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
def func(a, b, c=0, *args, **kw):
print ‘a =‘, a, ‘b =‘, b, ‘c =‘, c, ‘args =‘, args, ‘kw =‘, kw
func(1, 2, 3, ‘a‘, ‘b‘, x=99)
输出:
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {‘x‘: 99}
十二.切片,迭代
L为一列表L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。 L[-2:-1]表示取L[-2] 。包括左边的索引,不包括右边。 L[:10]
前十个数,L[-10:]后十个数, L[:10:2]前10个数,每两个取一个。
所有数,每5个取一个:
>>> L[::5][0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
Tuple和字符串也可用切片
>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)
isinstance(‘abc‘, Iterable) # str是否可迭代True
十三.生成器
一边循环一边计算的机制,称为生成器(Generator)。
要创建一个generator,只要把一个列表生成式的[]改成(),就创建了一个generator:
generator保存的是算法,每次调用next(),就计算出下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。
不断调用next()方法实在是太变态了,正确的方法是使用for循环,因为generator也是可迭代对象:
g = (x * x for x in range(10))
>>> for n in g:
... print n
...
0
1
49162536496481(显示结果是类似以上两个数)
如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
更多内容请访问:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000
标签:
原文地址:http://www.cnblogs.com/cccccttttyyy/p/5819520.html