本篇文章将介绍Python3中常见数据类型:字符串、列表、元组、字典,主要关于是数据的遍历、修改、删除、保存。
字符串
将数据用单引号或者双引号括起来的就是字符串。字符串类似于C、Java中的字符数组,支持下标索引。
a = “hello world” a = ‘hello world’
print(a[4])
输出:‘o’
- 切片
切片语法:[起始:结束:步长],切片区间是[起始:结束)即左闭右开的,起始位开始结束前一位结束。
>>> mystr = 'abcdefghijk' >>> mystr[0:5] 'abcde' >>> mystr[0:5:2] 'ace' >>> mystr[5:1:-1] 'fedc' >>> mystr[5:1:-2] 'fd' >>> mystr[3:] 'defghijk' >>> mystr[::3] 'adgj' >>> mystr[:5] 'abcde'
>>> mystr[::]
'abcdefghijk
- 字符串常见操作
(1) find 查询str是否包含在mystr中,如果是返回开始索引的位置,否则反回-1。
find(str, start=0, end=len(mystr))
>>> mystr = "hello world java python php" >>> mystr.find("world") 6 >>> mystr.find("python",0,10) -1
(2) index 和find一样,如果查询不到将报异常错误。
index(str, start=0, end=len(mystr))
>>> mystr.find("python",0,10) -1 >>> mystr.index('python',0,10) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
(3) count,返回start和end之间str在mystr中出现的次数。
count(str, start=0, end=len(mystr)) >>> mystr="hello world python java python" >>> mystr.count("python") 2
(4)replace替换,把mystr中的str1成为str2,如果count指定,则替换不超过count次数。
replace(str1, str2, mystr.count(str1)) >>> mystr="hello world python java python" >>> mystr.replace("python","python3",1) 'hello world python3 java python'
(5)split,用str为分割符切片mystr,如果指定maxsplit指定,则分割后是一个maxsplit+1的列表。
split(str=",", maxsplit ) >>> '1,2,3'.split(',') ['1', '2', '3'] >>> '1,2,3'.split(',', maxsplit=1) ['1', '2,3'] >>> '1,2,,3,'.split(',') ['1', '2', '', '3', '']
(6)startswith,查询字符串是否是以obj开头,如果是则返回True,否则返回False
endswith,查询字符串是否是以obj结束,如果是则返回True,否则返回False
mystr.startswith(obj) mystr.endswith(obj) >>> mystr = "hello world python java python" >>> mystr.startswith('hel') True >>> mystr.endswith('thon') True
(7)strip删除两端空白,lstrip删除左边空白,rstrip删除右边空白
>>> mystr = " hello world python java linux " >>> mystr.rstrip() ' hello world python java linux' >>> mystr.lstrip() 'hello world python java linux ' >>> mystr.strip() 'hello world python java linux'
(8)join 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
sep:分隔符。可以为空 seq:要连接的元素序列、字符串、元组、字典 即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串 返回值:返回一个以分隔符sep连接各个元素后生成的字符串 >>> lis = ['shang','hai','zhong','guo'] >>> ' '.join(lis) 'shang hai zhong guo'
列表
列表对应于C、Java中的数组,它比数组强大的地方在于可以存储不同类型的值。如 testList = [100,'HH']
(1)循环遍历列表
lis = ['my','name','is','zjh'] for name in lis: print(name,end=' ') print() 输出:my name is zjh
i = 0 while i < len(lis): print(lis[i],end=" ") i += 1 print() my name is zjh
(2)增加元素,append, extend, insert
append直接将新元素整体添加到列表末尾。
extend(seq),sep元素列表,用于将元素逐一添加到列表中。
insert(index,obj)在指定位置插入元素obj。
>>> a = [1,2] >>> b = [3,4] >>> a.append(b) >>> a [1, 2, [3, 4]] >>> a.extend(b) >>> a [1, 2, [3, 4], 3, 4] >>> a = [1,2,3,4] >>> a.insert(2,'b') >>> a [1, 2, 'b', 3, 4]
(3)修改元素
元素修改时需要通过下标来修改指定的元素。
>>> a = ['shanghai','beijing','shenzhen','guangzhou'] >>> a[3] = 'wuhan' >>> a ['shanghai', 'beijing', 'shenzhen', 'wuhan']
(4)删除元素
del:根据小标删除元素
pop: 删除最后一个元素
remove: 根据元素的值删除
['shanghai', 'beijing', 'shenzhen', 'wuhan'] >>> del a[0] >>> a ['beijing', 'shenzhen', 'wuhan'] >>> a.pop() 'wuhan' >>> a ['beijing', 'shenzhen'] >>> a.remove('shenzhen') >>> a ['beijing']
(5)查询元素
Python中常用的方法:in 、not in、index、count。
in 如果存在就返回True,否则返回False
not in 如果不存在就返回True,否则返回False
>>> slist = ['a','b','c','d'] >>> "c" in slist True >>> "D" in slist False
index 如果存在就返回位置,否则返回异常
count 如果存在就返回个数,否则返回0
>>> slist = ['a','b','c','d'] >>> slist.count('a') 1 >>> slist.count('c') 1 >>> slist.count('F') 0
元组
元组用小括号表示,和列表类似,只不过元组是不可修改类型。不支持添加、修改,但是可以访问。元组能够合并另一个元组。
>>> mTuple = ('hello',1,55) >>> type(mTuple) <class 'tuple'>
>>> mTuple[0]
'hello'
>>> mTuple.index(1)
1
>>> mTuple.count(55)
1
字典
字典使用大括号表示,能够存储多个数据,数据用键-值对表示{key:value}。例如 info = {'name':'小周', 'id':100, 'sex':'f', 'address':'魔都'}
(1)根据键访问值(访问不存在的键将报错)
info = {'name':'小周', 'id':100, 'sex':'f', 'address':'魔都'}
print("姓名:%s"%info['name'])
age = info.get('age',18) # 若info中不存在'age'这个键,就返回默认值18
print("小周年龄:%d"%age)
姓名:小周
小周年龄:18
(2)修改元素
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改。
info['id'] = 66 print("修改之后的id=%d"%info['id']) 输出:修改之后的id=66
(3)添加元素
info['education'] = '大学' print("添加新元素:%s"%info['education']) 输出:添加新元素:大学
(4)删除元素
del info['sex'] #根据指定key删除 print('删除sex:%s'%info) info.clear() #清空整个字典 print('清空字典:%s'%info) 删除sex:{'address': '魔都', 'education': '大学', 'id': 66, 'name': '小周'} 清空字典:{}
(5)字典常见操作
>>> info = {"name": "jinjin","address":"jingzhou"} >>> info.keys() dict_keys(['address', 'name']) >>> list(info.keys()) #返回所有字典KEY列表 ['address', 'name'] >>> list(info.values()) #返回所有value列表 ['jingzhou', 'jinjin'] >>> list(info.items()) #返回一个包含所有(key,value)元组的列表 [('address', 'jingzhou'), ('name', 'jinjin')] >>> len(info) #获取字典键值对个数 2
注:python3 中info.keys()返回的是一个dict_keys()对象,所以要将其转换为list;Python2中info.keys()直接返回的是列表。
遍历
通过for ... in ...:的语法结构,可以遍历字符串、列表、元组、字典等数据结构。
mystr = "hello world" print("字符串遍历:%s"%mystr) for char in mystr: print(char,end = " ") print() list1 = ["jin",1,2,3] print("列表遍历:%s"%list1) for i in list1: print(i,end=" ") print() Tuple = ("haa",1,3,5,7) print("元组遍历:",end="") print(Tuple) for tu in Tuple: print(tu,end=" ") print() dic = {"name":"xiaoxiao","age":18} print("遍历字典:%s"%dic) for key in list(dic.keys()): print(key,end=" ") print() for value in list(dic.values()): print(value,end= " ") print() for item in list(dic.items()): print(item,end= ",") print() for key,value in list(dic.items()): print("key=%s, value=%s"%(key,value)) print() 输出: 字符串遍历:hello world h e l l o w o r l d 列表遍历:['jin', 1, 2, 3] jin 1 2 3 元组遍历:('haa', 1, 3, 5, 7) haa 1 3 5 7 遍历字典:{'name': 'xiaoxiao', 'age': 18} name age xiaoxiao 18 ('name', 'xiaoxiao'),('age', 18), key=name, value=xiaoxiao key=age, value=18
公共方法
注:in在操作对象是字典时,判断的是key
内置函数