Python学习 11 - 基本数据类型 (list、tuple、dictionary)及常用命令

本文详细介绍了Python中的列表、元组和字典三种数据结构的操作,包括创建、修改、删除元素,以及计数、索引、切片等常见操作。此外,还讲解了如何进行数据类型转换,如将字符串转换为列表,元组转换为列表等。同时,文章探讨了字典的特性和操作,如更新、删除键值对等。通过对这些基础知识的掌握,有助于深入理解Python的数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人学习总结笔记如有不足和错误欢迎指教谢谢

列表(list):[ ] 例如:list = [ 1, 'a', 5, '我' ]

元祖(tuple):( ) 例如:tuple = (1, 'a', 5, '我' )

字典(dictionary):{ } 例如:dictionary = { aa : 1, ab : 'a', ac : 5,  ad : '我' }

一、列表(list)

列表是 有序的 而且 列表内的 元素是可以被修改的

列表使用 [ ] 中括号 把元素 括起来 并且 每个元素之间 用 , 逗号隔开

例如

n = [ 1, 'ab', 5, '我' ]

        1, 'ab', 5, '我'  这些就是元素

元素可以是 字符串、数字、布尔值、变量、其他的列表都可以
 

x = 5

n2 = [1,9,5,'asd',['张三','李四',123],'adam',x]

1 、列表可以使用切片或索引来提取

切片的范围是 左边的位<= 切片 <右边的位

x = 5
n2 = [1,9,5,'asd',['张三','李四',123],'adam',x] 
print(n2[3:5]) #['asd', ['张三', '李四', 123]] (3<= print <5)
print(n2[2])    #5
print(n2[-2]) #adam

当索要提取的元素位于列表中嵌套的另一个列表内时只需要一次填入每个列表中要提取的元素的位置值

例如

x = 11
n2 = [1,9,5,'asd',['张三',['xy', '西沙', 999],123],'adam',x]
print(n2[4][1][2]) #999

2、表格和字符不同,表格再内存中创建之后里面的元素是可以修改的,但是字符不行,字符只能新建

例如:

通过索引的方式修改

x = 5
n2 = [1,9,5,'asd',['张三','李四',123],'adam',x]
print(n2[2]) #5
n2[2] = 105 #把列表n2中的2号位置的元素赋值位105
print(n2[2]) #105

也可以通过切片的方式进行修改

x = 5
n2 = [1,9,5,'asd',['张三','李四',123],'adam',x]
print(n2[2])  #5
n2[2] = 105  #把列表n2中的2号位置的元素赋值位105
print(n2[2])  #105
n2[3:6] = [7, 8, 9]  #把列表的3,4,5这三个位的元素赋值位7,8,9
print(n2)   #[1, 9, 105, 7, 8, 9, 5]

PS:在内存中,表格内的元素都会有后一位的元素在内存从的位置,这个机制叫做链表,修改的本质就是删除选中的内容再添加到原来删除的位置

3、删除列表内的元素 del

例如

可以使用索引和切片的方式对元素进行删除操作

x = 5
n2 = [1,9,5,'asd',['张三','李四',123],'adam',x]
del n2[2]  #删除索引位2号位置的元素
print(n2)  #[1, 9, 'asd', ['张三', '李四', 123], 'adam', 5]
del n2[3:6]   #把列表的3,4,5这三个位的元素删除
print(n2)   #[1, 9, 'asd']

3、in判断

可以用 in 这个命令判断 元素是否存在列表之中 他会返回一个 布尔值

例如

x = 11
n2 = [1,9,5,'asd',['张三','李四',123],'adam',x]
v1 = '李四' in n2
v2 = 11 in n2
v3 = 'adam' in n2
v4 = ['张三','李四',123] in n2
print(v1) #False
print(v2) #True
print(v3) #True
print(v4) #True

4、字符串类型转变可以使用 list 命令把字符串转换为列表

单独转换一个元素的时候,只有str的变量才能进行转换,在转换单独数字元素的时候,需要使用str命令把int类型的变量转换成str类型再转换,并且这个元素会被分割成每一位为一个元素从新组合成一个列表

PS:也可以理解位是用for循环了这个字符串 并使用append添加到了列表中(纯数字不能用for循环)

当转换的元素是元祖的时候,元祖内的字符串和数字数据类型并不会改变,也不会被切分成最小的位,看起来就好像只是把小括号( )换成了中括号[ ]

当转换的是字典的时候 只有keys会被保留

例如

x = 'adam'
x1 = ("adma", 456)
x2 = {'aa':1, 'ab':2}

n1 = list(x) #把变量x(字符串) 转换成表格
n2 = list(x1) #把元祖转换成表格
n3 = list(x2) #把字典转换成表格

print(n1) #['a', 'd', 'a', 'm']
print(n2,type(n2[1])) #['adma', 456] <class 'int'>
print(n3) #['aa', 'ab']

5、append 添加元素

在列表末尾原有基础上添加一个或多个新的元素,也可以插入变量函数

例如

li = [1,2,3,4]
li.append(5)
print(li) #[1, 2, 3, 4, 5]
li.append('我')
print(li) #[1, 2, 3, 4, 5, '我']
li.append([4,8,9])
print(li) #[1, 2, 3, 4, 5, '我', [4, 8, 9]]
x = [22,33,44]
li.append(x)
print(li)#[1, 2, 3, 4, 5, '我', [4, 8, 9],[22,33,44]]

6、clear 清空

清空列表

li = [1,2,3,4]
li.clear()
print(li) #[]

7、 copy 拷贝

浅拷贝命令

li = [1,2,3,4]
x = li.copy()
print(x) #[1, 2, 3, 4]

8、count   计数

计算元素出现的次数

()括号中写的内容就是要计数的元素

li = [1,2,3,45,5,5,5,5,5,5] #有6个5
x = li.count(5) #计算li这个列表里面有几个5
print(x) #6

9、extend  扩展

把元素循环放入原有的列表中,它和append不同,append会把元素打包放在列表最后一个元素位,而extend会把每一个元素依次放入列表最后位

li = [1,2,3,4]
li.extend([555,'我们'])
print(li) #[1, 2, 3, 4, 555, '我们']

10、 index  索引

根据元素值获取当前索引位置

index是索引的意思,从左往右匹配,找到一个即退出

可以设置起始的搜索位置
 

li = [1,4,2,3,2,4]
x = 4
v = li.index(x)
v1 = li.index(4)
v2 = li.index(x,2) #从索引位置第2位开始想右搜索

print(v)    #1
print(v1) #1
print(v2) #5

11、insert  插入元素

第一个参数是插入位置 第二个参数是插入值 被插入后 其他元素会向后移动一位

li = [1,2,3,4]
li.insert(2, 6)
print(li) #[1, 2, 6, 3, 4]

12、pop  删除指定索引位置的值

删除指定索引位置的值 并获取 该值 默认删除最后一个值并获取这个被删除的值

li = [1,2,3,4]
li.pop()
print(li) #[1, 2, 3]
li = [1,2,3,4]
print(li.pop(1)) #2 #删除索引位置1的元素 并把它的值取回

13、  remove 删除列表中的指定值

左侧优先

li = [1,2,3,4,3]
li.remove(3) #删除3这个数值的元素
print(li) #[1, 2, 4, 3]

14、reverse 将当前列表元素进行反转

li = [1,2,3,4,5]
li.reverse()
print(li) #[5, 4, 3, 2, 1]

15、sort 排序

只能排序int数据和str数据 默认位递增排序 也可以反向排序

li = [5, 4, 3, 2, 1]
li.sort()
print(li) #[1, 2, 3, 4, 5]

 递减排序如下

li = ['e', 'a', 'c', 'd', 'b']
li.sort(reverse = True)
print(li) #['e', 'd', 'c', 'b', 'a']

二、元祖(tuple)

元祖其实就是对列表的二次加工

元祖是不能不修改的 也不能增加或删除

元祖是可迭代对象(可以用for循环)

元祖里面如果嵌套了列表 列表内的元素是可以被修改的

元祖可以索引和切片并且支持使用for循环

1、tuple转换位元祖

这个命令可以把字符串 列表 或者 字典 转化为 元祖 ,字符串会被 依次拆分为单个字节的元素 并顺序排列

只能转换 str 列表 和字典 不能转换 int

g = 'asdsadwa'
g1 = ['asd','asss','as']
g2 = [1234,'asd','asss','as']
g3 = {'asd':1,'asss':33,'as':4}

v = tuple(g)
v1 = tuple(g1)
v2 = tuple(g2)
v3 = tuple(g3)
print(v) #('a', 's', 'd', 's', 'a', 'd', 'w', 'a')
print(v1) #('asd', 'asss', 'as')
print(v2) #(1234, 'asd', 'asss', 'as')
print(v3) #('asd', 'asss', 'as')

2、count 统计指定元素在元祖中出现的次数

g = ('a', 's', 'd', 's', 'a', 'd', 'w', 'a')
print(g.count('a')) # a 出现了3次


3、index 左侧优先 找到指定值的索引位置   

可以设置起始位置 默认从0位开始搜索

如果不设置结束位置默认搜索值找到相符的值为止

g = ('a', 's', 'd', 's', 'a', 'd', 'w', 'a')
print(g.index('d')) # d 在第索引位置2出现
print(g.index('a',6)) #  a从第6位开始寻找索引位置7出现

三、字典(dictionary)

可变的值 是不能作为 key的 不能做哈希操作的都不能作为key

key不能是 布尔值 列表 和 字典 key的名字不能相同 如果相同则只能显示一个

字典是无序的 支持层层索引,索引使用key值进行,但是无法进行切片的方式进行找到里面的特定值

支持del删除的 使用方法跟索引差不多

for默认是循环所有的第一层的key

字典的结构

info = {

                'a1':'b1' #键值对 # a1是key,b1是值

                'a2':'b2'

        }

1、索引

索引匹配的是 键值 也就是key

info = {
	'a1':'18',#键值对
	'a2':'b2',
	'a3':[1,2,3,4,{
					'aa1':'ff1',
					'aa2':'xx1',
					'agg':(
						55,
						66
						)
					}
		],
	'a4':(88,99,44,33)
}
print(info['a3'][4]['agg'][0])#55

2、del 删除

它的用法和索引基本一致 ,直接删除键值,没法针对值单独进行删除

info = {
	'a1':'18',#键值对
	'a2':'b2',
	'a3':[1,2,3,4,{
					'aa1':'ff1',
					'aa2':'xx1',
					'agg':(
						55,
						66
						)
					}
		],
	'a4':(88,99,44,33)
}
del info['a3'][4]['agg']
print(info)#{'a1': '18', 'a2': 'b2', 'a3': [1, 2, 3, 4, {'aa1': 'ff1', 'aa2': 'xx1'}], 'a4': (88, 99, 44, 33)}

3、for循环

只是循环第一层 默认循环key也就是键(默认加了 .keys()这个参数)

info = {
	'a1':'18',#键值对
	'a2':'b2',
	'a3':[1,2,3,4,{
					'aa1':'ff1',
					'aa2':'xx1',
					'agg':(
						55,
						66
						)
					}
		],
	'a4':(88,99,44,33)
}
for v in info:
	print(v) #
	#a1
	#a2
	#a3
	#a4

也可以通过添加参数 .values()这个函数 使其输出 值,只输出值

info = {
	'a1':'18',#键值对
	'a2':'b2',
	'a3':[1,2,3,4,{
					'aa1':'ff1',
					'aa2':'xx1',
					'agg':(
						55,
						66
						)
					}
		],
	'a4':(88,99,44,33)
}
for v in info.values():
	print(v)
	#18
	#b2
	#[1, 2, 3, 4, {'aa1': 'ff1', 'aa2': 'xx1', 'agg': (55, 66)}]
	#(88, 99, 44, 33)

还可以使用 .items 这个参数 使得for循环输出 keys 和 values 也就是键值都输出,但是需要定义两个变量名,也只是循环第一层

info = {
	'a1':'18',#键值对
	'a2':'b2',
	'a3':[1,2,3,4,{
					'aa1':'ff1',
					'aa2':'xx1',
					'agg':(
						55,
						66
						)
					}
		],
	'a4':(88,99,44,33)
}


for k,v in info.items():
	print(k,v)
#a1 18
#a2 b2
#a3 [1, 2, 3, 4, {'aa1': 'ff1', 'aa2': 'xx1', 'agg': (55, 66)}]
#a4 (88, 99, 44, 33)

4、fromkeys 创建字典

默认创建一个只有keys的字典

.fromkeys([key名称],key值)

也可以添加key值但是,添加之后所有的值都是一样的

v = dict.fromkeys(['x11',99,'五'])
print(v) #{'x11': None, 99: None, '五': None}
v1 = dict.fromkeys(['x11',99,'五'],123)
print(v1)#{'x11': 123, 99: 123, '五': 123}

5、get 找到一个key的值

去找一个key的值,如果没有找到默认返回的值是None,但是后面加了参数之后,返回的值就是该参数

abc = {

'kx':12,
'kt':22

}

v = abc.get('kt')
print(v) #22
v1 = abc.get('kk',1)
print(v1) #1

6、pop删除

找到并删除一个键值,key和值都删除,并且返回这个key的值

如果没找到程序直接报错

可以设置参数 如果没有找到这个key则返回这个设置的值

abc = {

'kx':12,
'kt':22

}
v2 = abc.pop('kt')
print(v) #22
print(abc) #{'kx': 12}
v3 = abc.pop('kk',0)
print(v3) #0

7、popitem

随机找到一个key,并且删除这个key还会取得这个key和它的值赋值给前面两个变量

abc = {

'kx':12,
'kt':22

}
v1,v2 = abc.popitem()
print(v1,v2) #kt 22
print(abc) #{'kx': 12}

8、setdefault

给字典设置一个 key和值 ,如果没有这个key、就直接添加,并返回设置的值,如果已经有这个key了就取回现有的这个key的值

abc = {

'kx':12,
'kt':22

}
v2 = abc.setdefault('kk',123)
print(abc) #{'kx': 12, 'kt': 22, 'kk': 123}
v = abc.setdefault('kk',456)
print(v) #123
print(abc) #{'kx': 12, 'kt': 22, 'kk': 123}
print(v2) #123

9、update

更新词典,更新现有的key的值,创建没有的key并赋值

abc = {

'kx':12,
'kt':22

}
abc.update({'kx':14,'kt':52,'ke':456})
print(abc) #{'kx': 14, 'kt': 52, 'ke': 456}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值