目录
1、字符串
字符串是由单字符组成的序列(序列:一个包含其他对象的有序集合)
序列操作:
(1)内置函数len求取长度
(2)序列支持分片操作(slice),一般形式为X[I:J]表示在X中从偏移量为I直到但不包括J的内容。左边I默认为0,右边J默认为序列长度。
C:\Users\pc>python
Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s='spam'
>>> len(s)
4
>>> s[:3]
'spa'
>>> s[:]
'spam'
>>> s+'xyz'
'spamxyz'
>>>
字符串具有不可变性:
(1)字符串在python中具有不可变性,即创建后不能在原位置改变。(python中每一个对象都可归为不可变的或是可变的,数字、字符串、元组不可变,列表、字典可变)
(2)若想改变字符串的值,则需将其转化为列表
>>> s='spam'
>>> s[0]='z'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> L=list(s)
>>> L[0]='z'
>>> ''.join(L)
'zpam'
>>>
字符串的方法:
方法:依赖作用于对象上的函数。序列之间的操作是通用的,但对不同数据类型方法不通用
(1)S.find(a) 查找子字符串的操作,返回子字符串的位置
(2)S.replace(a,b) 在S中查找a并将其替换为b
(3)格式化操作:
>>> '{0},egg,and,{1}'.format('spam','SPAM')
'spam,egg,and,SPAM'
>>> '{},egg,and,{}'.format('spam','SPAM')
'spam,egg,and,SPAM'
2、列表
定义:
任意类型对象的有序集合。没有固定的大小,是最通用的序列
序列操作:
列表具有和字符串相同的序列操作,如求长度的len(),索引以及切片等
列表的方法:
(1)L.append() 在列表尾部插入给定的一项
(2)L.pop() 移除给定偏移量的一项,并返回这一项
L=[123,'spam',1.23]
>>> L.append('LIU')
>>> L
[123, 'spam', 1.23, 'LIU']
>>>
>>> L.pop(2)
1.23
>>> L
[123, 'spam', 'LIU']
(3)L.sort() 按照升序进行排列
>>> M=['bb','aa','cc']
>>> M.sort()
>>> M
['aa', 'bb', 'cc']
推导
使用推导可以简单的创建列表作为结果,但是能够在任何可迭代对象上进行迭代。
内置函数range会生成连续的整数,使用list()可以显示
M=[[1,2,3],[4,5,6],[7,8,9]]
>>> M
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> col2=[row[1] for row in M]
>>> col2
[2, 5, 8]
>>>
>>>
>>> doubles=[c * 2 for c in 'spam']
>>> doubles
['ss', 'pp', 'aa', 'mm']
>>> list(range(4))
[0, 1, 2, 3]
3、字典
字典:字典不是序列,而是一种映射。字典通过键来存储值,将键映射到值上。即key-->value
映射操作
(1)初始化
(2)键相当于列表中的索引
>>> D={'name':'liu','gender':'man'} #使用大括号进行初始化
>>> D['name']
'liu' #键相当于索引
>>>
>>>
>>> D={}
>>> D['name']='liu' #初始化后可进行添加
>>> D['gender']='man'
>>> D
{'name': 'liu', 'gender': 'man'}
>>>
>>> D=dict(name='liu',gender='man') #使用dict进行初始化
>>> D
{'name': 'liu', 'gender': 'man'}
>>>
>>>
>>> D=dict(zip(['name','gender'],['liu','man'])) #使用zip将键和值进行配对
>>> D
{'name': 'liu', 'gender': 'man'}
嵌套
字典中可以进行嵌套,即值可以是任何数据类型
嵌套允许轻松的建立复杂的数据结构,不必向c语言一样建立类似的结构会困难的多
if测试
判断某个键是否存在于字典中
>>> D={'name':'liu','gender':'man'}
>>> 'f'in D
False
>>> if not 'f' in D:
... print('missing')
...
missing
键的排序:for循环
字典中的键是没有顺序的排列的,若确实需要强加上顺序,可用内置函数sorted()
>>> D={'a':'1','c':'3','b':'2'}
>>> for key in sorted(D):
... print(key,'->',D[key])
...
a -> 1
b -> 2
c -> 3
4、元组:
元组是具有不可变性的列表,它具有序列的操作,和两个专属方法。
元组的初始化使用()
为什么使用元组
使用元组的关键在于不可变性
>>> T=(1,2,3,4) #初始化
>>> len(T)
4
>>> T+(5,6) #使用+操作后也不会改变原来元组的值
(1, 2, 3, 4, 5, 6)
>>> T
(1, 2, 3, 4)
>>>
>>> T.index(2) #元组的专属操作
1
>>> T.count(3)
1
5、文件
文件对象是python调用电脑上各种形式的文件的主要接口
文件的创建和读取
>>> f=open('data.txt','w') #文件的写入 'w'代表模式写入
>>> f.write('hello\n')
6
>>> f.write('world\n')
6
>>>
>>>
>>> f=open('data.txt','r') #文件的读取 'r'代表读取,默认模式为'r'
>>> text=f.read()
>>> print(text)
hello
world
类型的检验
内置函数type会返回对象的类型
>>> L=[1,'spam',1.2]
>>> type(L)
<class 'list'>
>>> if type(L)==type([]): #检验类型
... print('yes')
...
yes
>>> if type(L)==list:
... print('yes')
...
yes