欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 Python复杂数据类型(列表、元组、字典)详解

程序员文章站 2022-03-30 09:51:17
承接上篇文章,先补充一些关于列表的一些常用属性info = ['5', '4', '3']detail = ['email', 'utils', 'hard', 'aus']print(info)info.sort()print(info)print(sorted(detail))print(detail)...


承接上篇文章,先补充一些关于列表的一些常用属性

补充

arr.sort()/arr.sorted() 对数组进行排序

info = ['5', '4', '3']
detail = ['email', 'utils', 'hard', 'aus']
print(info)
info.sort()
print(info)

print(sorted(detail))
print(detail)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
从以上效果我们可以清楚的看出当我们调用arr.sort()时,在打印我们的的数组的时候,会发新数组会按照顺序排序并打印出来,当我们调用arr.sorted()时数组会进行排序,但是当我们重新打印数组时会发现数组还是按照之前的顺序进行打印,这就说明sort()是对数组永久排序,sorted()是对数组进行临时排序

arr.reverse()/len(arr)

detail = ['email', 'utils', 'hard', 'aus']
print(detail)
detail.reverse()
print(detail)
print(len(detail))

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
通过调用arr.reverse()我们可以清楚看到数组被倒着打印出来了,调用len(arr)返回的是数组的长度
欧克,到这里我们的补充就结束了,下面正式开始我们的正文

操作列表

遍历整个列表

detail = ['email', 'utils', 'hard', 'aus']
for i in detail:
    print("the print content is"+i.title())

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
通过使用for…in…语句我们就可以非常轻松的遍历我们的数组,这里的缩进一定不能错,因为打印的内容是在for循环中,一定不要让print()语句和for循环平级,这里的print相当于for循环的孩子

detail = ['email', 'utils', 'hard', 'aus']
for i in detail:
    print("the print content is"+i.title())
print("it is finish")

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
看我们以上的代码,我们的最后的print()语句是个for循环语句的起始位置都是相同的,说明它不是for循环内的语句,代码是一行行执行的,所以当我们的for循环语句执行结束后,才会执行我们的最后一个print()语句

操作数值列表

数值列表顾名思义就是创建一组只有数字的列表,如下:

util = [3,4,5,6,9]

但是当我们想要一下子生成一些数值列表,一个个手动创建却很麻烦,range()应运而生

for i in range(1,6):
    print(i)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
看,这样子是不是方便了很多,这里你会发现range(start,end)的end值却没有打印出来,start是从那个数字开始,end结束值是end-1

spuare = []
for i in range(0,11):
    test = i ** 2
    spuare.append(test)

print(spuare)

arr = [4,5,8,3,11,4,2]
print(max(arr))
print(min(arr))
print(sum(arr))

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
我们来一行行的看,首先我们循环遍历了一个0-10的数,然后遍历的每一项的值都进行平方运算,将运算过的值添加到我们提前声明好的空数组中,最后等for循环执行完毕,打印我们之前声明的数组,就有我们想要的数据
然后就是声明一个arr的数值列表,max(arr) 打印出数组中的最大的值,min顾名思义就是最小的,sum就是对数组中的每一项进行求和运算
然后我们来一点难的列表小例子,来加深印象,这里可能有点难,建议多看几遍

a = [i ** 2 for i in range(0, 11)]
print(a)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
你会发现这个的运行效果和上面的那个运行结果是相同的,其实上面的代码和当前的代码效果是一样的,这里我们需要从后往前看,这里我们是执行的for循环,也可以看作for循环的优先级比较高,for循环先给我们的i进行了赋值,然后在执行了平方运算,就得到了我们的结果
再来一个难题:如何拿到一个数组中的指定2个或多个指定的下标下的值?
简单点就是如何拿到test = [0,1,3,7,4,6] 中第2个下标和第5个下标的值呢

test = [0,1,3,7,4,6]
print(test[2])
print(test[5])

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
这不是很简单嘛,其实这时最笨的方法,那我们如何通过一步拿到指定多个下标下的值呢

test = [0,1,3,7,4,6]
a=[test[i] for i in [2,5]]
print(a)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
这里你会惊奇发现,执行的效果和上面的一样,我们来看代码,首先同上先执行for 循环,将我们定义的数组[2,5]的值分别赋值给i 然后会执行test[i]就是test[2],test[5]了,然后将值返给a的数组就可以拿到我们想要的结果了,这里有点绕,记得多看看多练练

切片

访问部分数组列表中的值就是切片

detail = ['email', 'utils', 'hard', 'aus']
print(detail)
print(detail[0:3])

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
这里也没什么好讲的,这里就是访问数组中第0,1,2索引下面的值

detail = ['email', 'utils', 'hard', 'aus']
print(detail)
print(detail[2:])
print(detail[-3:])

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
这里的detail[2:] 就是从detail[2]到detail的最后一个索引
detail[-3:]倒着数的第三个到最后一个

遍历切片

detail = ['email', 'utils', 'hard', 'aus']
for i in detail[0:3]:
    print(i)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
这里的detail[0:3]先拿到detail中索引为0,1,2的值,然后再进行遍历分别拿到每一项

复制列表

detail = ['email', 'utils', 'hard', 'aus']
print(detail)
util = detail[:]
print(util)
detail.append("apple")
util.append("orange")
print(detail)
print(util)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
这里我们调用detail[:]就相当于将detail的所有值写入到我们的新列表中,为了清楚看出这是两个列表,我们分别向这两个列表中添加了不同的数据

detail = ['email', 'utils', 'hard', 'aus']
detail.append("aaple")
util = detail
util.append("orange")
print(util)
print(detail)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
可以看到,当我们使用等号将列表赋值给另一个新的列表时,操作的还是同一个列表中的数据

元组

列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,这对处理网站的用户列表或游戏中的角色列表至关重要。然而,有时候你需要创建一系列不可修 改的元素,元组可以满足这种需求。Python将不能修改的值称为不可变的的 ,而不可变的列表被称为元组 。
元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。

detail = (30,50,80)
print(detail[1])
detail[1] = 40
print(detail)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
我们先定义了元组,我们使用访问列表的方式可以轻松的访问元组中的数据,但是当我们修改元组中指定索引下的值时,给我们返回了Typeerror 还记得元组的特性么,元组的值是不可修改的哟

遍历元组

detail = (30,50,80)
for i in detail:
    print(i)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
这里可以看出,遍历元组的方式和遍历列表的方式是相同的

修改元组变量

虽然我们不能修改元组中的变量,但是我们可以修改存储元组的变量

detail = (30,50,80)
for i in detail:
    print(i)
util = (80,50,30)
for value in util:
    print(value)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解这里相当于重新给元组变量赋值(覆盖)

字典

字典典 是一系列键—值值对对 。每个键 都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。

字典初识

detal = {'color': 'pink','fruit' : 'apple'}
print(detal)
print(detal['fruit'])

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
可以看到,字典是由{}包裹的键值对,通过访问键可以轻松获取到键所对应的值

添加键值对

detal = {'color': 'pink','fruit' : 'apple'}
detal['wear']= 'shoes'
print(detal)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
可以看到,添加键值对就是在字典中进行赋值(就相当于声明键值对)

修改键所对应的值

detal = {'color': 'pink','fruit' : 'apple'}
detal['wear']= 'shoes'
print(detal)
detal['fruit'] = 'banana'
print(detal)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解

删除键值对

detal = {'color': 'pink','fruit' : 'apple'}
detal['wear']= 'shoes'
print(detal)
detal['fruit'] = 'banana'
print(detal)
del detal['color']
print(detal)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
通过调用del 字典中的指定键 就可以将字典中指定键以及所对应的值进行删除操作

遍历字典

detal = {'color': 'pink','fruit' : 'apple'}
for key,value in detal.items():
    print(key+'--'+value)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
遍历字典中的所有键或值
当我们只想拿到字典中所有的键或者值时可以使用以下方法

detal = {'color': 'pink','fruit' : 'apple'}
for item in detal.keys():
    print(item)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解

detal = {'color': 'pink','fruit' : 'apple'}
for item in detal.values():
    print(item)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解

detal = {'color': 'pink','fruit' : 'apple','big':'apple'}
for i in set(detal.values()):
    print(i)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
在我们操作多字典时难免会遇到重复值,为了避免重复值的发生,我们可以调用set方法进行去重操作

嵌套

detal = {'color': 'pink','fruit' : 'apple'}
detal1 = {'color': 'dark','fruit' : 'banana'}
detal2 = {'state':'acc','content':'win'}
arr = [detal,detal,detal2]
print(arr)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
将三个字典放入到一个列表中

字典中存储列表

detal = {'color': 'pink','fruit' : ['apple','banana','orange']}
print(detal)
for i in detal['fruit']:
    print(i)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解

字典中存储字典

users = {
    'aeinstein': {'first': 'albert', 'last': 'einstein', 'location': 'princeton', },
    'mcurie': {'first': 'marie', 'last': 'curie', 'location': 'paris', },
}
for username, user_info in users.items():
    print("\nUsername: " + username)
    full_name = user_info['first'] + " " + user_info['last']
    location = user_info['location']
    print(full_name)

荐
                                                        Python复杂数据类型(列表、元组、字典)详解
字典中存储字典时,当我们循环遍历拿到字典中字典的值时,是对字典值的键进行操作获取字典中字典的值,这里很绕

文章的中的知识点参考《Python编程:从入门到实践》相当于是对于本书的解读以及加入自己的理解

欧克,到这里本篇文章就算时结束了,一定要记得多练习

本文地址:https://blog.csdn.net/yuhang01/article/details/107001807