python中的数据类型
- 一、列表
- 二、元组
- 三、字符串
- 四、字典
- 五、集合
- 六、总结
- 七、参考链接
一、列表
列表(list)是python内置的一种数据类型,它是一种有序的集合,可以随时添加和删除其中的元素。
1.1 创建列表
name1 = list() # 创建空列表
name2 = [] # 创建空列表
name3 = ['Bob', 'Jim', 'Linda'] # 创建并初始化列表
print(name3[0]) # 利用索引访问元素中的位置,索引从0开始
print(name3[-1]) # 倒序访问列表中的元素,表示取出列表中的最后一个元素
1.2 列表相关操作
###################### 切片操作 ##############################
a = [1, 2, 3, 4, 'a']
print(a[0:len(a)]) # 正序索引, 切片步长默认为1
print(a[0:len(a):2]) # 步长为2,起始索引为0,则打印的下一个数据的索引为0+2=2, 再下一个数据索引为2+2=4
print(a[-1:-len(a)-1:-1]) # 输出['a', 4, 3, 2, 1]
print(a[::-1]) # 逆序输出['a', 4, 3, 2, 1]
print(a[-3:-1]) # 输出[3, 4]
###################### 增加元素 ##############################
a = [1, 2, 3]
b = [4, 5]
a.append(b) # 向列表a的末尾中添加元素b
a.extend(b) # 向列表a中添加列表b
a.insert(1, [6, 7]) # 在索引为1的位置添加元素[6, 7]
###################### 修改元素 ##############################
a[1] = 10 # 根据列表的索引修改列表中的元素
###################### 查找元素 ##############################
10 in a # 若为真,则返回True
10 not in a # 若为真,则返回True
a.index('a', 1, 3) # 在1~3的索引区间范围内查找'a',返回元素'a'所在列表的位置索引,查找区间左开右闭
a.count('a') # 统计列表a中出现元素'a'的次数
###################### 删除元素 ##############################
del a[0] # 删除a[0]
a.pop() # 默认删除列表中的最后一个元素
a.remove('a') # 删除元素的值
###################### 元素排序 ##############################
a = [1, 4, 2, 3]
a.reverse() # 倒序排序
a.sort() # 从小到大排序
a.sort(reverse = True)
二、元组
元组(tuple)与列表类似,元组与列表的不同之处在于元组中的元素不能修改。
1.1 创建元组
a = tuple() # 定义一个空元组
b = () # 定义一个空元组
c = 1, # 定义仅有一个int类型数据的元组
1.2 元组相关操作
元组切片与列表类似,一般分为正向切片和反向切片两种操作,其基本切片参数为:[start: end: step],且遵循原则为包头不包尾。
###################### 元组切片 ##############################
a = (1, 2, 3, 4, 'a')
print(a[0:len(a)]) # 正序索引, 切片步长默认为1
print(a[0:len(a):2]) # 步长为2,起始索引为0,则打印的下一个数据的索引为0+2=2, 再下一个数据索引为2+2=4
print(a[-1:-len(a)-1:-1]) # 输出('a', 4, 3, 2, 1)
print(a[::-1]) # 逆序输出('a', 4, 3, 2, 1)
print(a[-3:-1]) # 输出(3, 4)
print(a[4:2:-1]) # 输出('a', 4)
print(a[4::-1]) # 输出('a', 4, 3, 2, 1)
1.3 其它情况
当一个元组里有其它类型元素,如列表。在此类情况下可以修改元组里的元素。具体如下所示:
b = ('a', 'b', ['X', 'Y']) # 创建元组
b[2][0] = 'A' # 修改元组里的元素
b[2][1] = 'B'
print(b)
上面代码输出的结果为:('a','b', ['A', 'B'])
,看似修改了元组的里的内容,但是实际上是修改了tuple中的列表中的值。因此,不能修改tuple中的元素指的是不能修改tuple中每个元素的指向。也即如图2-1所示,我们无法修改b[0], b[1], b[2]的值。
图2-1 元组存储示意图
三、字符串
在python中字符串类似于字符数组,因此字符串支持下标索引。注意,python中不区分字符与字符串,也即单个字符的定义与多个字符相同。
3.1 字符串下标索引
a = 'abcdefg'
print(a[0])
print(a[1])
3.1 字符串相关操作
对字符串的常规操作如下所示:(备注:这里只列举常用的一些字符串操作,其余的等有空咱再补上)
###################### 查找字符 ##############################
onestr='hello world! I love my hometown! I want to build my hometown'
onstr.find('my', 0, len(onestr)) # 返回查找到的第一个'my'中字符'm'的索引,若'my'不在onestr中则返回-1
onestr.index('my', 0, len(onestr)) # 返回查找到的第一个'my'中字符'm'的索引,若'my'不在onestr中则抛出异常
onestr.rindex('my', 0, len(onestr)) # 从右往左查找'my',并返回第一个'my'中字符'm'的索引,若'my'不在onestr中则抛出异常
###################### 字符统计 ##############################
onestr.count('my', 0, len(onestr)) # 返回字符串'my'出现的次数
###################### 字符分割 ##############################
newstr = onester.split('my', 2) # 以'my'字符传串进行分割
###################### 字符分割 ##############################
onestr.replace('my', 'you', onestr.count('my')) # 将'my'替换为'your',且替换次数不超过onestr.count(''my)
###################### 首字母大写 ##############################
newstr = onestr.capitalize() # 返回一个以首字母大写的字符串
#################### 单词首字母大写 #############################
newstr = onestr.title() # 返回一个以首字母大写的字符串
#################### 字符串开头结尾 #############################
print(onestr.startswith('hello')) # 检查字符串是否以'hello'开头
print(onestr.endswith('town')) # 检查字符串是否以'town'结尾
四、字典
字典是一种可变类容器对象,且可存储任意类型对象,且使用键-值(key-value)方式存储。注意:键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
####################### 创建字典 ###############################
slary = dict()
slary = {} # 空字典
info = {'name': 'David', 'sex': 'man', 'age': 15}
print(info['name']) # 根据键访问值,若键不存在则会报错
tt = info.get('tt') # 若不知道键是否存在字典中,可以用get方法判断,若不存在则tt=None
####################### 字典修改 ###############################
info['name'] = 'Jim' # 根据键修改值
info['id'] = 100 # 向字典中添加键'id'
####################### 字典删除 ###############################
del info['naem'] # 删除指定的元素
del info # 删除整个字典
info.clear() # 变为空子典
####################### 字典遍历 ###############################
for key in info.keys(): # 遍历键
print(key)
for value in info.values(): # 遍历值
print(value)
for item in info.items(): # 遍历项:('键', 值)
print(item)
for key, value in info.items():
print('key = %s, value = %s' % (key, value)) # 分别读取键和值
五、集合
集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合。注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
a = set('abcdefg') # 创建集合
print(a)
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # 会自动去掉basket中重复的元素,如'apple'和'orange'
thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook") # 添加元素
print(thisset)
六、总结
1、字符串(str)是不变对象,而列表(list)是可变对象。
2、与列表(list)比较,字典(dict)有一下特点:
1) 查找和插入的速度极快,不会随着key的增加而变慢。
2) 需要占用大量的内存,导致内存浪费,因此字典(dict)是典型以空间换取时间的一种做法。
3) 列表(list)则与字典相反,查找和插入时间随着元素的增加而增加,但是它占用空间小。
七、参考链接