在python中,序列就是一组按照顺序排列的值【数据集合】,在python中,存在三种内置的序列类型:字符串、列表、元组。
序列的优点:可以支持索引和切片的操作。
索引和切片 索引特征:第一个索引为0,指向的是左端,第一个索引为负数时,指向的是右端。
a="python" p y t h o n 对应下标 0 1 2 3 4 5
切片:(高级特性)可以根据下标来获取序列对象的任意(部分)数据
语法结构:[start:end(:step)],step即步长,默认值为1,取左不取右
for i in range(0,6):
test='python'
print('获得第'+str(i)+'个字符:%s'%test[i],end=" ")
------------------
获得第0个字符:p 获得第1个字符:y 获得第2个字符:t 获得第3个字符:h 获得第4个字符:o 获得第5个字符:n
切片
取偶数位置的字符
方法一:if…else…
datastr="hello,python"
for i in range(12):
if i%2==0:
continue
else:
print(datastr[i],end="t")
-------------------
e l , y h n
方法二:设置步长
datastr="hello,python" print(datastr[1:13:2]) ------------------- el,yhn序列常用函数
capitalize() 首字母大写
upper() 把字母转化为大写
lower() 把字母转化为小写
strip() 去除字符串中的空格
lstrip() 去除左边的空格
rstrip() 去除右边的空格
a=' hello '
print(a.strip())
print(a.lstrip())
print(a.rstrip())
print(a.strip().capitalize())
-------------------
hello
hello
hello
Hello
find() 查找下标值(只返回找到的第一个对应值的下标)
iddex()与find()相似,但index找不到目标时会报错
datastr="hello,python"
print(datastr.find('o'))
print(datastr.find('v'))
print(datastr.index('o'))
--------------------
4 #找到就显示该字符在字符串中的位置
-1 #找不到会显示-1
4
startwith() 判断是否为开头
endwith() 判断是否为结尾
datastr="hello,python"
print(datastr.startswith('o'))
print(datastr.endswith('n'))
--------------------
False
True
列表
列表是python当中非常重要的数据结构,是一种有序的数据集合
特点:支持增删改查;列表中的数据是可以变化的(数据可以变化,但内存地址不变);用[ ] 来表示内边类型,数据项之间用逗号分割(数据项可以使任何类型);支持索引、切片和遍历操作。
l=[1,2,3,"hello",[4,5,6]] #列表中的元素可以使任意数据类型 print(len(l)) print(type(l)) -------------------- 5
列表索引和切片
l=[1,2,3,"hello",[4,5,6]] print(l) #完整输出 print(l[0]) #输出第0个元素 print(l[0:3]) #输出前3个元素 print(l[2:]) #输出后3个元素 print(l[::-1]) #从右输出所有元素 print(l[4][1]) #输出列表中的列表元素 print(l*2) #列表*2再输出 --------------------- [1, 2, 3, 'hello', [4, 5, 6]] 1 [1, 2, 3] [3, 'hello', [4, 5, 6]] [[4, 5, 6], 'hello', 3, 2, 1] 5 [1, 2, 3, 'hello', [4, 5, 6], 1, 2, 3, 'hello', [4, 5, 6]]
列表的增删改
append() :添加元素
insert():插入元素
extend():扩展列表
del():删除元素
pop():删除元素,默认删除最后一个
list[索引值]=修改值:修改元素
l=[1,2,3]
l.append("helle") #添加一个字符串
l.append([1,2,3]) #添加一个列表
print(l)
l.insert(4,'python') #在第五个位置插入字符串
print(l)
num=list(range(0,5)) #
l.extend(num) #扩展列表,把num中的元素批量添加到l中
print(l)
l[0]="一" #把第一个元素修改为“一”
print(l)
del l[0:2] #删除前三个元素
print(l)
l.remove(4) #删除第五个元素
print(l)
l.pop() #删除最后一个元素
print(l)
l.pop(0) #删除第一个元素
print(l)
----------------
[1, 2, 3, 'helle', [1, 2, 3]]
[1, 2, 3, 'helle', 'python', [1, 2, 3]]
[1, 2, 3, 'helle', 'python', [1, 2, 3], 0, 1, 2, 3, 4]
['一', 2, 3, 'helle', 'python', [1, 2, 3], 0, 1, 2, 3, 4]
[3, 'helle', 'python', [1, 2, 3], 0, 1, 2, 3, 4]
[3, 'helle', 'python', [1, 2, 3], 0, 1, 2, 3]
[3, 'helle', 'python', [1, 2, 3], 0, 1, 2]
['helle', 'python', [1, 2, 3], 0, 1, 2]
元组
元组是不可变序列,在创建之后不能做任何修改
特点:不可变;用()创建元组,元素用逗号分割;可以是任何数据类型;当元组中只有一个元素时,要加上逗号,否则解释器会当做整型处理;支持索引、切片和遍历。
tuple=('abc',100,[1,2,3])
print(len(tuple)) #打印元组长度
print(type(tuple)) #打印元组数据类型
for i in tuple:
print(i,end="t") #遍历元组
print()
print(tuple[1:3]) #输出第2,3个元素
print(tuple[::-1]) #倒叙输出所有元素
print(tuple[::-2]) #倒叙每隔两个输出
print(tuple[:-2:]) #输出倒数第三个元素及其之前的字元素
print(tuple[-2::]) #输出倒数第三个元素及其之后的元素
------------------
3
abc 100 [1, 2, 3]
(100, [1, 2, 3])
([1, 2, 3], 100, 'abc')
([1, 2, 3], 'abc')
('abc',)
(100, [1, 2, 3])
a=range(0,10) print(a) print(type(a)) tuple=tuple(a) print(tuple) print(type(tuple)) ------------------ range(0, 10)字典(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
字典是由键值对组成的集合,通常使用键来访问数据,效率非常高,支持对数据的添加、修改和删除。
特点:不是序列,没有下标,不能索引,是一个无序的键值对结合。是内置的高级数据类型;用{}来表示字典对象,每个键值对用逗号分割;键必须是不可变类型(元组、字符串),值可以使任意类型,可重复;每个键必定是唯一的,如果添加重复的键,后者会覆盖前者。
dict={"school":"peking",'age': 30, 'pos': '歌手'} #定义一个字典,可以为空
dict['name']="Mike" #添加键值对
print(dict) #打印字典
print(dict['name']) #根据key打印value
dict['name']='Bob' #根据key修改值
print(dict['name'])
print(dict.keys()) #打印所有key
print(dict.values()) #打印所有value
print(dict.items()) #打印所有键值对
for key,value in dict.items():
print(key,value) #遍历字典
dict.update({'age':32}) #用update修改元素
dict.update({'height':175}) #用update添加元素
print(dict)
del dict['name'] #利用del删除键值对
print(dict)
dict.pop('age') #利用pop删除键值对
print(dict)
----------------------
{'school': 'peking', 'age': 30, 'pos': '歌手', 'name': 'Mike'}
Mike
Bob
dict_keys(['school', 'age', 'pos', 'name'] )
dict_values(['peking', 30, '歌手', 'Bob'])
dict_items([('school', 'peking'), ('age', 30), ('pos', '歌手'), ('name', 'Bob')])
school peking
age 30
pos 歌手
name Bob
{'school': 'peking', 'age': 32, 'pos': '歌手', 'name': 'Bob', 'height': 175}
{'school': 'peking', 'age': 32, 'pos': '歌手', 'height': 175}
{'school': 'peking', 'pos': '歌手', 'height': 175}
字典排序
dict={'school': 'peking', 'age': 32, 'pos': '歌手', 'name': 'Bob', 'height': 175}
print(dict)
a=sorted(dict.items(),key=lambda d:d[0]) #固定写法
print(a)
------------------------
{'school': 'peking', 'age': 32, 'pos': '歌手', 'name': 'Bob', 'height': 175}
[('age', 32), ('height', 175), ('name', 'Bob'), ('pos', '歌手'), ('school', 'peking')]
其他操作
拼接:+
a="人生苦短," b="我用python" print(a+b) l1=list(range(0,5)) l2=list(range(5,10)) print(l1+l2) ------------------- 人生苦短,我用python [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
复制:*
b="我用python" l1=list(range(0,5)) print(b*3) print(l1*2) --------------- 我用python我用python我用python [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
存在:in
b="我用python"
print('python' in b)
print('hello' in b)
l1=list(range(0,5))
print(1 in l1)
print(10 in l1)
dict={"name":"mike","age":"30"}
print('name' in dict)
print('mike' in dict)
--------------------------
True
False
True
False
True
False
集合
集合(set)也是python中的一种数据类型,是一个无序的不重复的元素合集;不支持索引和切片;类似于字典,但是只有key,没有value。
set1={1,2,3}
dict1={}
print(type(set1))
print(type(dict1))
#运行结果
添加:add
set1={1,2,3}
set1.add(4)
print(set1)
#运行结果
{1, 2, 3, 4}
移除首个:pop
set1={1,2,3}
quset=set1.pop()
print(quset)
print(set1)
#运行结果
1
{2, 3}
指定移除:discard
set1={1,2,3}
quset=set1.discard(3)
print(quset)
print(set1)
#运行结果
None
{1, 2}
更新:update
set1={1,2,3}
set2={2,3,4,5,6}
set1.update(set2)
print(set1)
#运行结果
{1, 2, 3, 4, 5, 6}
清空:clear
set1.clear()
print(set1)
#运行结果
set()
取差集:.difference
set1={1,2,3}
set2={2,3,4}
rs=set1.difference(set2)
print(set1-set2)
print(rs)
#运行结果
{1}
{1}
取交集:intersectio
set1={1,2,3}
set2={2,3,4}
rs=set1.intersection(set2)
print(set1&set2)
print(rs)
#运行结果
{2, 3}
{2, 3}
取并集:union
set1={1,2,3}
set2={2,3,4}
rs=set1.union(set2)
print(set1|set2)
print(rs)
#运行结果
{1, 2, 3, 4}
{1, 2, 3, 4}
扩展
id(),查看函数的内存地址
a='hello' b=a print(id(a),id(b)) a=1 print(a,b) print(id(a),id(b)) ------------------ 2629336247856 2629336247856 #说明b=a,不是将a的赋值给b,而是b复制了a的内存地址 1 hello #将a的值改变 2629334493488 2629336247856 #a的内存地址改变,b不变,b可以理解为linux中的硬链接
len()用于获取目标的长度
l=[1,2,3,"hello",[4,5,6]] print(len(l)) a="hello,python" print(len(a)) ------------------ 5 12



