Python(四)序列与字典

python提供:字符串,列表,元祖三种序列

一序列

1序列的概念

序列的成员有序排列,可以通过下标访问到一个或者几个成员类似C语言的一维数组和多维数组。

2序列通用操作

字符串、列表、元祖等序列类型具有:索引操作符和切片操作符

(1)索引操作符:用于从序列中得到特定元素

序列型的数据类型的每个元素都有一个标号用于标识其位置,从左至右依次是0,1,...,n,从右向左计数来存取元素称为负数索引,依次是-1,-2,...,-n。li[-n]==li[len(list)-n]

(2)切片操作符:用于获取序列的多个元素,即一部分序列。

格式:

[切片开始位置:切片截止位置(但不包含)]

例:

l1=[1,1.3,"a"]
print l1[1:2]

(3)加:连接两个序列,两个序列必须是相同的类型(字符串,列表,元祖)才可以连接

l1=[1,1.3,"a"]
l2=[2]
print l1+l2
[1, 1.3, 'a', 2]

(4)乘:序列的乘法表示将原来的序列重复多次

l1=[1,1.3,"a"]
print l1*2

[1, 1.3, 'a', 1, 1.3, 'a']

(5)检查某个元素是否属于序列

判断某个元素是否在序列中,可以使用in或not in运算符

l1=[1,1.3,"a"]
print 1 in l1
True

3序列其他操作

(1)len(seq)求出序列所包含的元素数量

(2)min(seq)求序列最小值

(3)max(seq)求序列最大值

(4)sum(seq[index1,index2])求序列中切片之间的和,序列元素必须是数值

二列表

1列表概念

有序,可以放不同数据类型的元素,用逗号分隔并放在一对中括号[ ]中。

2列表操作

概览:len,max,min,sum,count,index(一个对象首次出现的索引位置),reverse(所有元素的逆序),clear(清空列表),append(在列表末端插入对象),extend(在列表末端插入新列表的所有元素),del(移除给定索引位置上的元素),remove(移除一个对象的首次出现),insert(在给定索引位置上插入新元素),+,*,sort(对列表中的元素进行比较和排序,注:sort没有返回值,不能用在赋值语句中)

注:在执行del,remove方法后,列表中其他元素会依次往左移动一个位置。执行了insert后,列表中其他元素会依次向右移动一个位置

(1)创建列表:使用”=“将一个列表赋值给变量

(2)读取元素:用列表名加元素序列号访问列表中的某个元素

(3)修改list中的元素:只需直接给元素赋值

l1=[1,1.3,"a"]
l1[0]=2
print l1
[2, 1.3, 'a']

(4)增加元素:

方法一:+将一个列表附加在原列表的尾部

l1=[1,1.3,"a"]
l1=l1+[2]
print l1

[1, 1.3, 'a', 2]

方法二:append()方法向列表尾部添加一个新元素

l1=[1,1.3,"a"]
l1.append(True)
print l1

 [1, 1.3, 'a', True]

方法三:extend()方法将一个列表添加在原列表的尾部

l1=[1,1.3,"a"]
l1.extend(['x',4])
print l1
[1, 1.3, 'a', 'x', 4]

方法四:使用insert()方法将一个元素插入到列表的任意位置。

l1=[1,1.3,"a"]
l1.insert(0,'x')
print l1
['x', 1, 1.3, 'a']

(5)检查元素:

使用count()方法计算列表中某个元素出现的次数

l1=[1,1.3,"a",'x',1]
print l1.count(1)

 2

使用in运算符返回某个元素是否在该列表中

(6)删除元素

del删除某个特定位置的元素

l2=[1,1.3,"a",'x',1]
del l2[2]
print l2

 [1, 1.3, 'x', 1]

remove删除某个特定值

l2=[1,1.3,"a",'x',1]
l2.remove('a')
print l2
[1, 1.3, 'x', 1]

pop方法(参数)弹出指定位置的元素,默认参数时弹出最后一个元素

l2=[1,1.3,"a",'x',1]
l2.pop()
print l2
l2.pop(1)
print l2
[1, 1.3, 'a', 'x']
[1, 'a', 'x']

3列表解析

对列表中的每个元素执行一个特定的函数。一个for循环可以,更简单的方式是列表解析

list2=[f(x) for x in list1]

list1 = {'2', '5', '6', '7'}
list2 = [int(x) for x in list1]
print(list2)

除了列表,列表解析也可以用在其他对象上,如:字符串,元祖,由range函数产生的算术表达式

print([ord(x) for x in "abc"])
print([x ** 0.5 for x in (4, -1, 9) if x >= 0])
print([x ** 2 for x in range(3)])

结果:

[97, 98, 99]
[2.0, 3.0]
[0, 1, 4]

三元祖

1元祖概念

元祖与列表相似,但其元素不可变。相当于只读列表

与列表相比,相同点:

(1)按定义的次数进行排序

(2)负数索引从元祖尾部开始计数

(3)也可使用分片

不同点:

(1)定义元祖用圆括号()不用方括号[]

(2)不能向元祖添加元素,元祖没有append和extend方法

(3)不能从元祖删除元素,没有remove和pop方法

(4)元祖没有index方法,但可使用in方法

(5)元祖可以在字典中被用作键,但是列表不行

元祖适用于只能进行遍历操作的运算,由于对数据进行“写保护”,使得代码安全,操作速度比列表快

2元祖操作

(1)访问元祖

tup=('a','b',1997,2000)
print tup[0]
print tup[0:2]

a

('a', 'b')

(2)元祖连接

用+号

(3)删除元祖

元祖中的元素值不允许删除,但可以使用del语句删除整个元祖

tup=('a','b',1997,2000)
del tup
print tup

 

Traceback (most recent call last):
  File "/tmp/207442730/main.py", line 6, in 
    print tup
NameError: name 'tup' is not defined

exit status 1

四字符串

1字符串操作

(1)index

s='Python'
print s.index('P')
print s.index('h',1,4)
0
3

(2)find

s='Python'
print s.find('s')
print s.find('h',1)
print s.find('h',4)
-1
3
-1

(3)replace

s='Python'
print s.replace('h','1')
Pyt1on

(4)count

s='Python'
print s.count('h')

1

(5)split

split默认以字符串中的空格作为分隔符进行分隔,返回字符串组成的新字符串。

s='hello Python'
print s.split()
['hello', 'Python']

(6)join

fruits=['apple','banana','pear']
sep=';'
print sep.join(fruits)
apple;banana;pear

2字符串,列表,元祖转换

(1)字符串转换为列表,使用list()

str='123,45'
print list(str)

['1', '2', '3', ',', '4', '5']

(2)字符串转换为元祖,使用tuple()

str='123,45'
print tuple(str)
('1', '2', '3', ',', '4', '5')

(3)列表和元祖转换为字符串,必须使用join方法

l = ["hi","hello","world"]
print(" ".join(l))
print("".join(list(l)))

hi hello world

hihelloworld

五字典

1字典概念

相当于映射map,通过键值对key-value存储数据,具有极快的查找速度。

d={"zhou":95,"bob":88}
print d["zhou"]

95

字典通过用空间来换取时间,与列表比较:

(1)字段查找和插入的速度快,不会随着键的增加而增加

(2)字典需要占用大量内存

(3)字典是无序集合,字典中的值通过键来存取而不是偏移存取

字典有如下特性:

(1)字典的值可以是任意数据类型,包括字符串,整数,对象,甚至字典

(2)不允许同一个键重复出现,如果同一个键被赋值两次,那么后一个值会覆盖前面的值

dict={"zhou":96,"li":86,"zhou":95}
print dict["zhou"]

95

(3)键必须不可变,只能由数,字符,元祖,不能用列表

2字典操作

(1)字典元素访问

keys()方法返回一个包含所有键的列表

has_key()检查字典是否存在某一键

values()返回一个包含所有值的列表

get()根据键的返回值,如果不存在输入的键,返回None

items()返回一个列表,元素是由(key,value)组成的元祖

dict={"zhou":96,"li":86}
print dict.keys()
print dict.has_key("zhou")
print dict.values()
print dict.get("li")
print dict.items()

 

['zhou', 'li']
True
[96, 86]
86
[('zhou', 96), ('li', 86)]

(2)字典元素的删除

del()按键从字典中删除元素

clear()清除字典中的所有元素

pop()删除按关键字删除元素并返回它的值

dict={"zhou":96,"li":86,"laowang":666}
del dict["zhou"]
print dict
dict.pop("laowang")
print dict
dict.clear()
print dict
{'laowang': 666, 'li': 86}
{'li': 86}
{}

(3)update方法

update类似合并,把一个字典的键值合并到另一个字典,覆盖相同键的值。

tel={"laowang":1234,"zhangsan":1235}
tel1={"xulu":2268}
tel.update(tel1)
print tel
print tel1
{'xulu': 2268, 'zhangsan': 1235, 'laowang': 1234}
{'xulu': 2268}

(4)in运算

字典里的in运算用于判断某键是否在字典里,对于value值不适用

tel={"laowang":1234,"zhangsan":1235}
print "xu" in tel
False

 

你可能感兴趣的:(python)