Dive in Python学习笔记三:内置数据类型


 

Dictionary介绍

Dictionary定义了键值之间一对一的关系。

定义Dictionary

>>>d = {"server":"mpilgrim","database":"master"}

取值

>>>d["server"] #输出mpilgrim

修改Dictionary

>>>d["database"]="pubs"

如果key已经存在则修改key对应的value值,否则添加一个key-value对

注意:dictionary的key大小写敏感

删除dictionary元素

>>>del d['database'] #删除key为database的键值对

清空dictionary(删除dictionary所有元素)

>>>d.clear()

 

List介绍

List是一个用方括号包括起来的有序元素的集合。List可以作为以0下标开始的数组。

List定义

>>>li = ['a','b','z','example']

取List元素

>>>li[-1] #输出'example'

说明:负数索引从list的尾部开始向前计数来存取元素。li[-n]=li[len(li) - n]。

列表切片list[start:end:step]

start可以省略,默认为0;end可以省略默认为list的长度;step可以省略,默认为1。

li[:n]总是返回前n个元素,而li[n:]总是返回剩下的元素。li[:]生成一个list拷贝。

添加元素

1. append向list的末尾追加单个元素

>>>li

['a','b','mpilgrim','z','example']

>>>li.append("new")

>>>li

['a','b','mpilgrim','z','example','new']

2. insert向list指定位置插入单个元素

>>>li

['a','b','mpilgrim','z','example']

>>>li.insert(2,"new")

>>>li

['a','b','new','mpilgrim','z','example']

3. extend连接list,将两个list为一个

>>>li

['a','b','mpilgrim','z','example']

>>>li.extend(["two","elements"])

>>>li

['a','b','mpilgrim','z','example','new','two','elements']

 

append和extend区别:

1. append接受一个参数,参数可以是任何类型,并简单地追加到list的尾部

>>>li = ['a','b','c']

>>>li.append(['d','e','f'])

>>>li

['a','b','c',['d','e','f']]

 

2. extend接受一个参数,参数必须是list类型,并且把该list中的每一个元素添加到原list中

>>>li = ['a','b','c']

>>>li.extend(['d','e','f'])

>>>li

['a','b','c','d','e','f']

 

list搜索

index在list中查找一个值的首次出现并返回索引值。如果没有找到,则会抛出异常。

 

测试list是否含有元素

item in list

 

Python布尔规则:

1. 0为false,其他所有数值皆为true

2. 空串("")为false;其他所有字符串皆为true

3. 空list([])为false;其他所有list皆为true

4. 空tuple(())为false;其他所有tuple皆为true

5. 空dictionary({})为false;其他所有dictionary皆为true

 

list元素删除

1. remove从list中删除一个值的首次出现,如果有多个值,则只删除第一个元素。

2. pop删除list的最后一个元素,然后返回删除元素的值。

 

list运算符

1. + 连接list

list = list + otherlist相当于list.extend(otherlist)。但+运算符把一个新的list作为值返回,而extend只修改存在的list。

 

2. +=

li += ['two']等同于li.extend(['two'])

 

3. * 重复器

li = [1,2] * 3等同于li=[1,2]+[1,2]+[1,2],即将三个list连接成一个

 

Tuple介绍

Tuple是不可变的list。Tuple是用小括号包围的元素列表。

负数索引与list一样从tuple的尾部开始计数。

与list一样分片(slice)也可以使用。

 

Tuple与List的转换

1. Tuple转换为List

>>> li = list((1,2))

[1,2]

2. List转换为Tuple

>>> tu = tuple([1,2])

(1,2)

从效果上看,tuple冻结一个list,而list解冻一个tuple。

 

变量定义

Python也有局部变量和全局变量之分,但没有明显的变量声明。变量通过首次赋值产生,当超出作用范围时自动消亡。

注:当一条命令用续行符("\")分割成多行时,后续的行可以以任何方式缩进,无需遵守Python的严格缩进规则。

 

变量引用

引用未赋值的变量为报错:NameError: There is no variable named 'x'

 

一次赋多值

>>> v = ('a', 'b', 'e')

>>> (x, y, z) = v

>>> x

'a'

>>> y

'b'

>>> z

'e'

说明:(x,y,z) = v 分别将v中'a','b','c'赋值给变量x,y,z

 

连续值赋值

通过range函数生成连续值列表,然后一次性赋值给多个变量。

>>>range(7)

[0,2,3,4,5,6,7]

 

>>> (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)

>>> MONDAY

0

>>> TUESDAY

1

>>> SUNDAY

6

 

说明:内置的range函数返回一个元素为整数的list。这个函数的简化调用形式是接收一个上限值,然后返回一个初始值从0 开始的list,它依次递增,直到但不包含上限值。还可以传入其它的参数来指定一个非0 的初始值和非1 的步长。

 

格式化字符串

Python 支持格式化字符串的输出。Python中,字符串格式化使用与C 中sprintf 函数一样的语法。

>>> k = "uid"

>>> v = "sa"

>>> "%s=%s" % (k, v)

'uid=sa'

说明:整个表达式的值为一个字符串。第一个%s 被变量k 的值替换;第二个%s 被v 的值替换。(k, v) 是一个tuple。

 

映射list

Python 的强大特性之一是其对list 的解析,它提供一种紧凑的方法,可以通过对list 中的每个元素应用一个函数,从而将一个list 映射为另一个list。

>>> li

[1, 9, 8, 4]

>>> li = [elem*2 for elem in li]

>>> li

[2, 18, 16, 8]

注意:对list的解析并不改变原始的list

 

连接list为单个字符串

使用字符串对象的join方法连接list的各个元素。

>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}

>>> ";".join(["%s=%s" % (k, v) for k, v in params.items()])

'server=mpilgrim;uid=sa;database=master;pwd=secret'

说明:

1. 这里的join 方法将list 中的元素连接成单个字符串,每个元素用一个分号隔开。分隔符不必是一个分号;它甚至不必是单个字符。它可以是任何字符串。

2. join 只能用于元素是字符串的list;它不进行任何的强制类型转换。对于其他类型需要强制转换为字符串。

>>> v = [1,2]

>>> ";".join(v)

Traceback (most recent call last):

File "", line 1, in

";".join(v)

TypeError: sequence item 0: expected str instance, int found

>>> ";".join([str(item) for item in v])

'1;2'

 

分割字符串

字符串的split方法,将字符串按指定分割符分割成list。

>>>s

'server=mpilgrim;uid=sa;database=master;pwd=secret'

>>> s.split(";")

['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']

>>> s.split(";", 1)

['server=mpilgrim', 'uid=sa;database=master;pwd=secret']

说明:split 接受一个可选的第二个参数,它是要分割的次数


摘自 蓝猫的专栏

相关内容

    暂无相关文章

评论关闭