首页 > 代码库 > Python2入门(2)

Python2入门(2)

Python2入门(2

九.List tuple dict set

创建ListL = [‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘]

显示ListL[0]

遍历Listprint (L)for循环

更新Listappend()insert()和直接赋值

删除Listpop()pop(n)

List特点:

可以添加删除

1

2

3

4

5

6

Li = [‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘]

 

print (Li)

 

for name in Li:

    print(name)

  

 

创建TupleTu = (‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘)

显示TupleTu[0]

遍历Tupleprint (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)

  

创建DictDi = {‘Adam‘:100, ‘Lisa‘:90, ‘Bart‘:93, ‘Gechong‘:100, ‘Kongming‘:100}

显示DictDi[‘Adam‘]Di.get(‘Adam‘)

遍历Dictprint(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:浪费空间

3key不可以重复,且不可变

4:数据无序排放

 

创建sets = 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‘)

  

遍历setprint (s)

1

2

3

4

s = set([‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Gechong‘, ‘Kongming‘])

 

for name in s:

    print (name)

  

更新sets.add()

删除sets.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



来自为知笔记(Wiz)


Python2入门(2)