python学习笔记15(Tuples 元组)

Chapter 10

元组是列表的有限版本。总的来说,元组是一个更有效的列表版本,你不能修改。所以它们确实是不可修改的列表。这里只是元组的语法,但是它看起来就像列表,除了我们要用括号。

知识点1:
关于元组(tuple)的一些特点。

  • 元组是左右两侧是由普通的括号组成的
  • 元组最重要的一点是,它是不可修改的,在此总结一下,截至目前,不可修改的有字符串、元组;可修改的有列表,字典。
  • 除此之外,元组可以使用类似于列表等的max功能函数、for循环遍历等等功能。
  • 注意,元组是不能够被排序的(sort),一旦元组被创建,就不能改变,不能追加,不能扩展,不能反转等等,从list和tuple的dir目录就可以发现,元组的是列表的子集。

因此,元组相对于列表来说使用起来更有效率,如果要在程序中需要一些暂时性的变量,用元组比列表更为合适。

aaa = tuple()
print(type(aaa))
print(dir(aaa))

知识点2:
元组可以放在等号的两端,一一对应

(a , b) = (99 , 'Hello')
print(a , b)
print(a)
print(b)

输出结果为:
99 Hello
99
Hello

知识点3:
元组与字典

dict1 = {'a':1 , 'b':2 , 'c':3}
for (k , v) in dict1.items():
    print(k , v)

print(dict1.items())

输出结果为:
a 1
b 2
c 3
dict_items([(‘a’, 1), (‘b’, 2), (‘c’, 3)])
字典当中的.item()功能返回一个由元组组成的列表。

知识点4:
元组是可以被比较的,注意,前面讲过,字符串也是可以被比较的。
其比较规则是从最左侧的那个元素开始相比。

#元组的比较
print((1,2,3) < (1,2,4))
print(('Gary' , 'Sally') < ('Sally' , 'Gary'))

输出结果为:
True
True

知识点5:
元组本身的顺序是不能改变的,但是我们可以通过元组可以比较大小的特性来sort元组组成的list,即字典.items()的东西。

#通过元组比较大小的特性来sort the list of tuples
dict2 = {'b':1 , 'a':2 , 'c':3}
list1 = sorted(dict2.items())
print(list1)

输出结果为:
[(‘a’, 2), (‘b’, 1), (‘c’, 3)]
这里有几个注意点:

  • dict2.items()的类型不是list,所以不能用.sort()来进行排序
  • sorted()这个函数甚至把其转换成了list型的变量
print(type(list1))

<class ‘list’>

知识点5:
sorted()
sorted()是一个内置的函数,我们可以使用这个函数来对一个序列进行排序,最终返回得到一个排序后的序列。
在这里可以对上一个程序用一个更加直观的写法。

for k , v in sorted(dict2.items()):
    print(k , v)

这样的写法的输出结果为:
a 2
b 1
c 3
就是以一个结果的形式输出的,而不是以一个由元组组成的列表的形式输出的。

重要:需要注意的是,以上的排序是基于key的顺序进行排序的,而不是基于value进行的排序!!!

知识点6:
那么我们如何基于value来进行sort呢?

#基于value来进行sort
list2 = list()  #创建用于存放转换后数据的列表。
dict3 = {'a':2 , 'b':3 , 'c':1}
for k , v in dict3.items():
    print(v , k)
    list2.append((v , k))
print(list2)
list2 = sorted(list2 , reverse = True)    #列表的值是可以改变的/第二个参数的意思为,是否倒序?
print(list2)
for val , key in list2:
    print(val , key)

输出结果为:
[(2, ‘a’), (3, ‘b’), (1, ‘c’)]
[(1, ‘c’), (2, ‘a’), (3, ‘b’)]
1 c
2 a
3 b

知识点7:
List Comprehension

#List Comprehension
c = {'a':10 , 'b':1 , 'c':22}
print(sorted([(v , k) for k , v in c.items()] , reverse = True))

输出结果为:
[(22, ‘c’), (10, ‘a’), (1, ‘b’)]
这一小段代码完成的功能是将乱序的代码,基于value,倒序排序。

发布了34 篇原创文章 · 获赞 5 · 访问量 6928

猜你喜欢

转载自blog.csdn.net/weixin_43593303/article/details/90146116