Python教程--列表,元组和字典

一、列表

1、创建列表

之前我们用变量存储数字,字符串等,但我们有时候想用到多个变量,总不能定义多个变量吧,这时候我们可以使用列表,创建一个空列表的方法为

a = [] 或者 a = list()
print(a)

结果:	[]

如果已经有初始化的值1, 2, 3, 4,那么格式为

a = [1, 2, 3, 4]
print(a)

结果:	[1, 2, 3, 4]

我们也可以初始化字符串

a = [‘Donnie’, ‘John’, ‘Jack’]
print(a)

结果:	['Donnie', 'John', 'Jack']

也可以整型,字符串的混合

a = [1, ‘John’, ‘Jack’, 2]
print(a)

结果:	[1, 'John', 'Jack', 2]

2、列表基本操作

我们可以通过下标获取列表中的值,下标从0开始,比如我们想获取a中的第1个值,那么使用a[0]就好,以此类推

a = [1, 2, 3, 4]
print(a[0])
print(a[2])

结果:	1
		3

另外,当我们已知列表中的值,想知道某个值的下标是多少,可以使用index方法

a = [1, 2, 3, 4]
print(a.index(3))

结果:	2

我们如果想获取最后面的数据,可以使用pop方法

a = [1, 2, 3, 4]
print(a.pop()) # 每pop一次,队列的数据就会变少
print(a)
print(a.pop())
print(a)

结果:	4
		[1, 2, 3]
		3
		[1, 2]

获取列表中某一个元素出现的次数

a = [1, 2, 3, 4, 5, 1, 1, 2]
print(a.count(1)) #  统计1出现的次数
print(a.count(2)) #  统计2出现的次数
print(a.count(3)) #  统计3出现的次数

结果:	3
		2
		1

对列表元素进行升序排序

a = [1, 3, 2, 8, 5, 1, 1, 2]
a.sort()
print(a)

结果:	[1, 1, 1, 2, 2, 3, 5, 8]

对列表元素进行降序排序

a = [1, 3, 2, 8, 5, 1, 1, 2]
a.sort(reverse=True)
print(a)

结果:	[8, 5, 3, 2, 2, 1, 1, 1]

倒序输出列表元素

a = [1, 3, 2, 8, 5, 1, 1, 2]
a.reverse()
print(a)

结果:	[2, 1, 1, 5, 8, 2, 3, 1]

在列表中某一位置插入元素

a = [1, 3, 2, 8, 5, 1, 1, 2]
a.insert(1, 100) #  在第一个元素之后插入100
print(a)

结果:	[1, 100, 3, 2, 8, 5, 1, 1, 2]

在列表尾部一次性追加另一个列表中的多个值

a = [1, 3, 2, 8, 5, 1, 1, 2]
b = ['Donnie', 'John']
a.extend(b)
print(a)

结果:	[1, 3, 2, 8, 5, 1, 1, 2, 'Donnie', 'John']

删除列表中的某一个元素

a = [1, 3, 2, 8, 5, 1, 1, 2]
a.remove(8)
print(a)

结果:	[1, 3, 2, 5, 1, 1, 2]

a = [1, 3, 2, 8, 5, 1, 1, 2]
a.remove(1) #  若要删除的元素在列表中存在多个,则默认删除第一个
print(a)

结果:	[3, 2, 8, 5, 1, 1, 2]

获取列表的长度

a = [1, 3, 2, 8, 5, 1, 1, 2]
print(len(a))


结果:	8

清空列表元素

a = [1, 3, 2, 8, 5, 1, 1, 2]
a.clear()
print(a)

结果:	[]

3、浅拷贝与深拷贝

我们再初学列表的时候,总是会踩进这个拷贝的坑里面,举一个简单的例子:

a = [1, 3, 2, 8, 5, 1, 1, 2]
b = a
print(a)
print(b)
b.append('Donnie')
print(a)
print(b)

结果:	[1, 3, 2, 8, 5, 1, 1, 2]
		[1, 3, 2, 8, 5, 1, 1, 2]
		[1, 3, 2, 8, 5, 1, 1, 2, 'Donnie']
		[1, 3, 2, 8, 5, 1, 1, 2, 'Donnie']

我们将a复制给b,然后在b队列的尾部追加一个Donnie的字符串,本来我们想要的结果是下面这样的:

		a:[1, 3, 2, 8, 5, 1, 1, 2]
		b:[1, 3, 2, 8, 5, 1, 1, 2, 'Donnie']

结果发现改了b之后,a的数据也变了,这是因为虽然表面看上去是a赋值给b,两个是毫不相关的,但实际上a和b指向的都是同一个地址,修改值实际上是修改地址上的内容,因为两个指向同一地址,所以a和b的数据会同时变化,如果想要a赋值给b并且两个互不干扰的话,那就要采用深拷贝,需要用到copy这个库

import copy

a = [1, 3, 2, 8, 5, 1, 1, 2]
b = copy.deepcopy(a)
print(a)
print(b)
b.append('Donnie')
print(a)
print(b)

结果:	[1, 3, 2, 8, 5, 1, 1, 2]
		[1, 3, 2, 8, 5, 1, 1, 2]
		[1, 3, 2, 8, 5, 1, 1, 2]
		[1, 3, 2, 8, 5, 1, 1, 2, 'Donnie']

二、元组

元组与列表相似,区别在于,列表可以修改,但元组一旦初始化成功之后就不能再修改

1、创建元组

a = (1, 2, 3)
print(a)

结果:	(1, 2, 3)

2、元组的基本操作

通过下标查找元素

a = (1, 2, 3, 1, 2, 2)
print(a[0])
print(a[2])
print(a[5])

结果:	1
   		3
   		2

统计某一个元素出现的次数

a = (1, 2, 3, 1, 2, 2)
print(a.count(1)) #  统计1出现的次数
print(a.count(2)) #  统计2出现的次数
print(a.count(3)) #  统计3出现的次数

结果:	2
   		3
   		1

查找元素所在的下标

a = (1, 2, 3, 1, 2, 2)
print(a.index(3)) #  查找元素3所在位置的下标
print(a.index(1)) #  查找元素1所在位置的下标,若存在多个相同的元素,则取第一个第一个的下标
print(a.index(2)) #  查找元素2所在位置的下标,若存在多个相同的元素,则取第一个第一个的下标

结果:	2
   		0
   		1

获取元组的长度

a = (1, 2, 3, 1, 2, 2)
print(len(a))


结果:	6

三、字典

字典也是一种存储的模型,与列表不同的是,字典每个元素拥有一个唯一的键值,基本格式为
a = {key1: value1, key2: value2, key3: value3, ... ...}

1、创建字典

** 创建一个空白字典**

a = {} 或者 a = dict()
print(a)

结果:	{}

创建一个非空字典

a = {'name': 'Donnie', 'age': 22}
print(a)

结果:	{'name': 'Donnie', 'age': 22}

2、字典的基本操作

获取列表中key值对应的value

a = {'name': 'Donnie', 'age': 22}
print(a['name'])
print(a['age'])

结果:	Donnie
   		22

获取字典的长度

a = {'name': 'Donnie', 'age': 22}
print(len(a))

结果:	2

修改或者追加字典中的值

a = {'name': 'Donnie', 'age': 22}
a['height'] = 180 #  字典中追加一个key值为height,value为180的值
a['name'] = 'John' #  将name对应的value由Donnie改为John
print(a)

结果:	{'name': 'John', 'age': 22, 'height': 180}

删除字典中某一个key: value

a = {'name': 'Donnie', 'age': 22}
a.pop('name')
print(a)

结果:	{'age': 22}

清除字典中的所有值

a = {'name': 'Donnie', 'age': 22}
print(a)
a.clear()
print(a)

结果:	{'name': 'Donnie', 'age': 22}
   		{}

3、浅拷贝与深拷贝

同样,字典与列表一样,也有浅拷贝和深拷贝之分

浅拷贝

a = {'name': 'Donnie', 'age': 22}
b = a
b['height'] = 180
print(a)
print(b)

结果:	{'name': 'Donnie', 'age': 22, 'height': 180}
   		{'name': 'Donnie', 'age': 22, 'height': 180}

深拷贝

import copy

a = {'name': 'Donnie', 'age': 22}
b = copy.deepcopy(a)
b['height'] = 180
print(a)
print(b)

结果:	{'name': 'Donnie', 'age': 22}
   		{'name': 'Donnie', 'age': 22, 'height': 180}

四、复合操作

对于列表、字典来说,他们之间是可以任意嵌套的,以提高我们代码的灵活性

a = [1, 2, 3]
b = (1, 2, 3)
c = {'name': 'Donnie', 'age': 22}

a.append(b) #  a列表后面追加元组b
print(a)
a.append(c)#  a列表后面追加字典c
print(a)


a = [1, 2, 3]
b = (1, 2, 3)
c = {'name': 'Donnie', 'age': 22}

c['a'] = a #  c字典中添加一个key名字为a,value为a列表的对象
print(c)
c['b'] = b #  c字典中添加一个key名字为b,value为b元组的对象
print(c)

结果:	[1, 2, 3, (1, 2, 3)]
   		[1, 2, 3, (1, 2, 3), {'name': 'Donnie', 'age': 22}]
   		{'name': 'Donnie', 'age': 22, 'a': [1, 2, 3]}
   		{'name': 'Donnie', 'age': 22, 'a': [1, 2, 3], 'b': (1, 2, 3)}

五、总结

我们学习了列表,元组和字典,他们大大提高了我们对多数据的集成和复用,为了更好的、方便的快速添加和提取这些数据,我们再下一章中为大家介绍条件判断,循环等语句的操作

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值