字符串/列表/元组/字典
1. 序列
在 python 中,序列是一组按照顺序排列的值。
python 中,存在三种内置序列:
字符串,元组,列表;
优点:支持索引,切片;
特征:第一个索引为0,指向左端;第一个索引为负数,指向右端;
2. 切片
切片:根据下标截取的对应序列的部分内容;
使用:变量名 [ start : end : step ],其使用为 step 不写默认为 1, 不可以为 0;
# 切片操作
c = "hello world"
print(c)# 输出完整数据
print(c[::-1])# dlrow olleh,倒序输出
print(c[0:3])# 下标为 0,1,2 的部分
print(c[:3])# 也可以这样写
print(c[7:])# 下标为 7,8,9,10 的部分
print(c[7:11])# 也可以这样写
3. 字符串
3.1 字符串使用
# 字符串也有下标,取出部分字符串,可以使用对应下标
a = 'python'
for b in a:
print(b,end='')
3.2 字符串常用方法
# 三种内置序列:字符串,元组,列表
# 字符串也有下标,取出部分字符串,可以使用对应下标
a = 'pythoN'
for b in a:
print(b + " ",end = '')
print(" ")
# 字符串常用方法
# 首字母变大写
print(a.capitalize())# Python
b = " Hello "
print(b)
# 删除左边空格
print(b.lstrip())
# 删除右边空格
print(b.rstrip())
# 查看内存地址
print(id(b))#2628669065264
print(id(a))#2628665927856
# 查找目标是否在“字符串”中
print(a.find("o"))# 4,返回位置
print(a.find("z"))#-1,找不到返回 -1
#index 函数也可以用来查找
print(a.index("o"))# 4,返回位置
#print(a.index("z"))# 找不到会报异常,不会返回 -1
print(a.startswith('p'))# True,是否以某字母开头
print(a.endswith("n"))# False ,是否以某字母结尾
# 转换小写
print(a.lower())# python
# 转换大写
print(a.upper())# PYTHON
4. 列表
list 是一种有序的数据集合,可以随时添加或删除其中的元素;
特点:
1. 支持增删查改
2. 列表中的数据是可以改变的(数据项可以改变,内存地址不会改变)
3. 用 [ ] 表示列表类型,数据项之间用逗号分隔,数据项可以是任何类型的数据
4. 支持索引和切片操作
# list:基础操作
li = [ ]# 空列表
li = [1,2,3,"吃饭",'c',"python"]
print(len(li))# 列表长度 6
print(type(li))# <class 'list'>
4.1 查找
# 查找
# 索引与切片相关操做
print(li)# [1, 2, 3, '吃饭', 'c', 'python']
print(li[0])# 1
print(li[:4])# [1, 2, 3, '吃饭']
print(li[0:4])# [1, 2, 3, '吃饭']
print(li[4:])# ['c', 'python']
print(li[4:6])# ['c', 'python']
print(li[::-1])# 倒序:['python', 'c', '吃饭', 3, 2, 1]
# index 查找
print(li.index('c',0,10))# 返回下标:从下标为 0 和 10 的范围查找'C',返回下标
print("========================================================")
# 复制
print(li * 2)#复制两次 [1, 2, 3, '吃饭', 'c', 'python', 1, 2, 3, '吃饭', 'c', 'python']
print("========================================================")
4.2 增加
# 增加
print("增加前:{}".format(li))
li.append("xxx")# append 方法只允许添加一个参数
print("增加后:{}".format(li))
li.append(['aaa','b','c'])
print("增加后:{}".format(li))
#插入
li.insert(2,100)# 索引为 2 的位置插入 100
print("增加后:{}".format(li))
s = list(range(10))# 强制转换
print(s)
# extend 同时添加多个
li.extend([11,33,55])
print("增加后:{}".format(li))
print("========================================================")
4.3 修改
# 修改
print("修改之前:{}".format(li))
li[0] = 3.1415926
print("修改之后:{}".format(li))
print("========================================================")
4.4 删除
# 删除
print("删除之前:{}".format(li))
del li[0] # 删除
print("删除之后:{}".format(li))
del li[0:3]# 批量删除
print("删除之后:{}".format(li))
li.remove(11)# 删除指定元素,参数为具体的对象
print("删除之后:{}".format(li))
li.pop(1)# 删除指定项,参数为索引值
print("删除之后:{}".format(li))
5. 元组
一种不可变的序列,创建之后不能做任何的修改;
特点:
1. 不可变
2. 可以是任何类型
3. 支持切片操作
4. 用( )创建元组类型,数据项用逗号分开
5. 当元组中只有一个元素时,要加上逗号,不然解释器会当作整型处理
5.1 元组创建
# 元组,不可修改
tuple = ("apple",123,'a',[11,22,'12'])
print(type(tuple))# <class 'tuple'>
print(tuple)# ('apple', 123, 'a', [11, 22, '12'])
5.2 元组查询
# 元组的查询
tuple_b = (1,3,5,'a',"apple",3.14)
for a in tuple_b:
print(a,end = ' ')# apple 123 a [11, 22, '12']
print(" ")
print(tuple_b[2:4])# ('a', [11, 22, '12'])
# 反转字符串
# print(tuple_b[::-1])#反转字符串:([11, 22, '12'], 'a', 123, 'apple')
print(tuple_b[::-2])# 反转,并每隔一个取
print(tuple_b[::-3])# 反转,并每隔两个取
print(tuple_b[-2:-1:])# ('apple',),结尾位置为负数,从左往右,apple是-2,3.14是-1,取一位
5.3 修改元组中列表
print("===============================")
# 元组不能修改内容,但可以修改元组中的列表
tuple_c = (11,22,33,44,[1,2,3,4])
print(type(tuple_c[4]))# <class 'list'>
tuple_c[4][1] = 11
print(tuple_c)# (11, 22, 33, 44, [1, 11, 3, 4])
5.4 单个元素加逗号
# 元组,单个数据项必须加逗号
tuple_e = (2)
print(type(tuple_e))# <class 'int'>
print(tuple_e)#元素本身: 2
tuple_e = (2,)
print(type(tuple_e))# <class 'tuple'>
print(tuple_e)#元组: (2,)
5.5 方法
# 方法
# count 方法:统计元素个数:
tuple_f = (11,22,11,22,33,44,55,)
print(tuple_f.count(11))# 2
# index 方法,返回对象下标
print(tuple_f.index(44))#下标为: 5
6. 字典
Pythion 中一种重要的数据类型
可以存储任意对象
以键值对 { ‘ key ’ : ' value ' } 的形式创建
字典的键不能重复,值可以重复
可进行增删查改操作
6.1 创建字典
#创建字典
dict = {'a':'吕小布','b':'刘备备','c':'张飞飞'}
#{'a': '吕小布', 'b': '刘备备', 'c': '张飞飞'}
print(dict)
6.2 添加数据项
# 添加字典数据
dict['w'] = "王昭君"
dict['l'] = '吕小布'
print(dict)
#{'a': '吕小布', 'b': '刘备备', 'c': '张飞飞', 'w': '王昭君', 'l': '吕小布'}
# 更新数据也可以
dict.update({"啥":"你说啥"})
print(dict)
# {'a': '吕小布', 'b': '刘备备', 'c': '张飞飞', 'w': '王昭君', 'l': '吕小布', '啥': '你说啥'}
6.3 查找数据项
# 查找
# 数据项长度
print(len(dict))# 5
# 通过键获取对应的值
print(dict['a'])# 吕小布
# 修改键对应的值
dict['a'] = "吕大布"
print(dict['a'])# 吕大布
# 获取所有的键
print(dict.keys())
# dict_keys(['a', 'b', 'c', 'w', 'l'])
# 获取所有的值
print(dict.values())
# dict_values(['吕大布', '刘备备', '张飞飞', '王昭君', '吕小布'])
# 获取所有的键和值
print(dict.items())
# dict_items([('a', '吕大布'), ('b', '刘备备'), ('c', '张飞飞'), ('w', '王昭君'), ('l', '吕小布')])
for key,value in dict.items():
print("%s==%s"%(key,value))
# a==吕大布
# b==刘备备
# c==张飞飞
# w==王昭君
# l==吕小布
6.4 删除数据项
# 删除操作
del dict['a']# 通过指定键删除
print(dict)
# {'b': '刘备备', 'c': '张飞飞', 'w': '王昭君', 'l': '吕小布', '啥': '你说啥'}
dict.pop('b')# 通过指定键删除
print(dict)
# {'c': '张飞飞', 'w': '王昭君', 'l': '吕小布', '啥': '你说啥'}
6.5 数据项排序
# 排序操作
print(dict)
#[('c', '张飞飞'), ('l', '吕小布'), ('w', '王昭君'), ('啥', '你说啥')]
# 按照键排序
print(sorted(dict.items(),key = lambda d:d[0]))
# 结果按照字母顺序打印输出{'c': '张飞飞', 'w': '王昭君', 'l': '吕小布', '啥': '你说啥'}
# 按照值排序
print(sorted(dict.items(),key = lambda d:d[1]))
# [('啥', '你说啥'), ('l', '吕小布'), ('c', '张飞飞'), ('w', '王昭君')]
以上代码的汇总:
# 字典
#创建字典
dict = {'a':'吕小布','b':'刘备备','c':'张飞飞'}
#{'a': '吕小布', 'b': '刘备备', 'c': '张飞飞'}
print(dict)
# 添加字典数据
dict['w'] = "王昭君"
dict['l'] = '吕小布'
print(dict)
#{'a': '吕小布', 'b': '刘备备', 'c': '张飞飞', 'w': '王昭君', 'l': '吕小布'}
# 更新数据也可以
dict.update({"啥":"你说啥"})
print(dict)
# {'a': '吕小布', 'b': '刘备备', 'c': '张飞飞', 'w': '王昭君', 'l': '吕小布', '啥': '你说啥'}
# 查找
# 数据项长度
print(len(dict))# 5
# 通过键获取对应的值
print(dict['a'])# 吕小布
# 修改键对应的值
dict['a'] = "吕大布"
print(dict['a'])# 吕大布
# 获取所有的键
print(dict.keys())
# dict_keys(['a', 'b', 'c', 'w', 'l'])
# 获取所有的值
print(dict.values())
# dict_values(['吕大布', '刘备备', '张飞飞', '王昭君', '吕小布'])
# 获取所有的键和值
print(dict.items())
# dict_items([('a', '吕大布'), ('b', '刘备备'), ('c', '张飞飞'), ('w', '王昭君'), ('l', '吕小布')])
for key,value in dict.items():
print("%s==%s"%(key,value))
# a==吕大布
# b==刘备备
# c==张飞飞
# w==王昭君
# l==吕小布
# 删除操作
del dict['a']# 通过指定键删除
print(dict)
# {'b': '刘备备', 'c': '张飞飞', 'w': '王昭君', 'l': '吕小布', '啥': '你说啥'}
dict.pop('b')# 通过指定键删除
print(dict)
# {'c': '张飞飞', 'w': '王昭君', 'l': '吕小布', '啥': '你说啥'}
# 排序操作
print(dict)
#[('c', '张飞飞'), ('l', '吕小布'), ('w', '王昭君'), ('啥', '你说啥')]
# 按照键排序
print(sorted(dict.items(),key = lambda d:d[0]))
# 结果按照字母顺序打印输出{'c': '张飞飞', 'w': '王昭君', 'l': '吕小布', '啥': '你说啥'}
# 按照值排序
print(sorted(dict.items(),key = lambda d:d[1]))
# [('啥', '你说啥'), ('l', '吕小布'), ('c', '张飞飞'), ('w', '王昭君')]
7. 公用方法
7.1 合并( + )
# 合并
# 字符串
strA = " 三个小和尚,"
strB = "一个老和尚"
print(strA+strB)# 三个小和尚,一个老和尚
# 列表
listA = [11,22,33]
listB = [44,55,66]
print(listA+listB)# [11, 22, 33, 44, 55, 66]
# 元组
tupleA = ('ha',)
tupleB = ("he",)
print(tupleA+tupleB)# ('ha', 'he')
7.2 复制( * )
# 复制
strC = "wahaha"
listC = ["wa hou"]
tupleC = ('neng',)
print(strC * 2)# wahahawahaha
print(listC * 2)# ['wa hou', 'wa hou']
print(tupleC * 2)# ('neng', 'neng')
7.3 判断元素是否存在( in )
# 判断,结果为布尔值
strD = "aaaaaa"
print('a' in strD)# True
listD = [11,22,33,44]
print(11 in listD)# True
tupleD = (11,)
print(11 in tupleD)# True
dictD = {"a":11,'ab':"2222"}# 字典只能根据键来判断
print('a' in dictD)# True