栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python知识梳理(高级数据类型及索引切片)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python知识梳理(高级数据类型及索引切片)

序列

在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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1002401.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号