Python之item,zip+练习题(冒泡排序)

item()

item()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回。

D = {'A':'a', 'B':'b', 'C':'c'}
print(D.items())
res = {v:k for k,v in D.items()}
print(res)
#运行结果dict_items([('B', 'b'), ('C', 'c'), ('A', 'a')])
{'b': 'B', 'a': 'A', 'c': 'C'}

zip

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
我们可以使用 list() 转换来输出列表。

a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]


[1,2,3,4]
[‘a’,’b’,’c’,’d’]
两个列表同步随机,也就是两个列表随机,但是对应关系保持一致
[2,1,4,3]
[‘b’,’a’,’d’,’c’]

import random
L1=[1,2,3,4,5]
L2=['a','b','c','d','e']
print(list(zip(L1,L2)))#zip就是对应相加
print(tuple(zip(L1,L2)))
res = random.sample(tuple(zip(L1,L2)),5)
print(res)
print([v[0] for v in res])#列表解析
print([v[1] for v in res])
#运行结果:[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]
((1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'))
[(2, 'b'), (4, 'd'), (5, 'e'), (3, 'c'), (1, 'a')]
[2, 4, 5, 3, 1]
['b', 'd', 'e', 'c', 'a']

附加:冒泡排序(今天刚看到,分享一下)

L = [5,4,8,2,1,0,9,7]
for i in range(len(L)):
    for j in range(len(L)-i-1):
        if L[j]<L[j+1]:
            mid = L[j]
            L[j]=L[j+1]
            L[j+1] = mid
print(L)

不太懂的可以参考下面解析
https://www.bilibili.com/video/av9830014?from=search&seid=10806602475893375699

猜你喜欢

转载自blog.csdn.net/qq_42849332/article/details/81661368