python学习笔记04:冒泡排序,三元表达式,列表生成式

冒泡排序原理:依次比较两个相邻的元素,如果顺序错误就把他们交换过来

1. 冒泡排序

一维数组冒泡排序

l = [2, 1, 3, 6, 45, 23, 4, 7]
for i in range(len(l)-1):  # 这个循环负责总共需要多少趟
    for j in range(len(l)-1-i):  # 这个循环负责每趟里面相邻2个元素交换
        if l[j] > l[j+1]:
            l[j], l[j+1] = l[j+1], l[j]  # 满足条件交换位置
print(l)

冒泡排序小练习

f = open('数据.txt', encoding='utf-8')
info = {}
for line in f:
    if line.strip():
        name = line.split()[1]
        km = line.split()[-1]
        if km.isdigit():
            km = int(km)
        else:
            km = float(km)
        info[name] = km

data = list(info.items())  # 转成二维数组,每个数组里面是个元祖
for i in range(len(data)-1):  # 二维数组冒泡排序
    for j in range(len(data)-1-i):
        if data[j][-1] < data[j+1][-1]:  # 二维数组交换位置
            data[j], data[j+1] = data[j+1], data[j]
print(data)

count = 1
f2 = open('排序.txt', 'w', encoding='utf-8')
for name, km in data:  # 循环二维数组
    msg = ('%s. %s %s\n' % (count, name, km))
    f2.write(msg)
    count += 1
f.close()
f2.close()

2. 交换变量

# python中交换2个变量的值,不需要引入第三方变量
a = 1
b = 2
a, b = b, a  # 交换2个变量
print(a, b)

c = 3
a, b, c = c, a, b  # 交换多个变量
print(a, b, c)

3. 三元表达式

a = 1
sex = '' if a == 1 else ''  # 三元表达式
print(sex)

4. 列表生成式

l = [1, 5, 7, 6, 32, 567, 45, 897]
l2 = [i for i in l]  # 把每次循环的结果保存到list里
l3 = [str(i) for i in l]
l4 = [str(i)+'km' for i in l]
l5 = [str(i)+'km' for i in l if i >= 30]
print(l2)
print(l3)
print(l4)
print(l5)

 

posted @ 2020-05-06 23:07  张小歪  阅读(268)  评论(0)    收藏  举报