今天开始学python不久的表弟让我给他讲题引发的一些思考:
为了能让他完全理解,最基本的写法
a = int(input("请依次输入a的值:"))
b = int(input("请依次输入b的值:"))
c = int(input("请依次输入c的值:"))
if a > b:
max_num = a
min_num = b
else:
max_num = b
min_num = a
if min_num > c:
min_num = c
if max_num < c:
max_num = c
print('最大值为 % s 最小值为 % s ' % (max_num, min_num))
他说代码太长了,能不能短一些,我就教他函数了
a = int(input("请依次输入a的值:"))
b = int(input("请依次输入b的值:"))
c = int(input("请依次输入c的值:"))
print('最大值{}, 最小值{}'.format(max(a, b, c), min(a, b, c)))
他说,能不能更短一些,为了面子,我就想了一下
num = input("请依次输入a b c的值(中间用空格隔开):")
print(f'最大值为{max(list(map(int, num.split())))},最小值为{min(list(map(int, num.split())))}')
最后,他说能不能一行实现,我暂时还没有想到。为了面子,只是这样胡弄他下。
num = input("请依次输入a b c的值(中间用空格隔开):"); print(f'最大值为{max(list(map(int, num.split())))},最小值为{min(list(map(int, num.split())))}')
python高级语法
# lambda 函数使用
a = lambda x: x + 2
print(a(2)) # 4
b = lambda x, y: x ** y
print(b(2, 3)) # 8
# 列表推导式 和 lambda 函数结合使用
li1 = [i for i in range(10) if i % 2 == 0]
print(li1) # [0, 2, 4, 6, 8]
# 对列表内的各个元素按照某条件排序
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
print(sorted(students, key=lambda s: s[2])) # 按年龄排序 [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
my_list = [3, 5, -4, -1, 0, -2, -6]
print(sorted(my_list, key=lambda x: abs(x))) # 按绝对值排序 [0, -1, -2, 3, -4, 5, -6]
# 字典推导式
dic1 = {'name': i for i in range(6) if i == 4}
print(dic1) # {'name': 4}
dic2 = {index: i for index, i in enumerate(range(6))}
print(dic2) # {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5}
# map reduce filter 用法
from functools import reduce
import math
# map 对sequence中的item依次执行function(item) 然后再对可迭代对象依次进行作用
# 对列表求算术平方根
map_list = [4, 9, 16, 25, 36]
print(list(map(lambda x: math.sqrt(x), map_list))) # [2.0, 3.0, 4.0, 5.0, 6.0]
# filter 对sequence中的item依次执行function(item) filter然后再根据返回值True或者False决定留哪一个值
# 求1~20之间的偶数
print(list(filter(lambda x: x % 2 == 0, range(1, 21)))) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
# reduce function参数是一个有两个参数的函数,reduce依次从sequence中取一个元素,和上一次调用function的结果做参数再次调用function。
# 求1到5之和
print(reduce(lambda x, y: x + y, range(1, 6))) # 15
# 上式计算原理 ((((1+2)+3)+4)+5)
# 补充zip
a = ['xiaoming', 'xiaoli', 'xiaowang']
b = [24, 25, 28]
print(list(zip(a, b))) # [('xiaoming', 24), ('xiaoli', 25), ('xiaowang', 28)]
print(dict(zip(a, b))) # {'xiaoming': 24, 'xiaoli': 25, 'xiaowang': 28}
dd = list(zip(a, b))
print(*zip(dd)) # (('xiaoming', 24),) (('xiaoli', 25),) (('xiaowang', 28),)