1.语言基础
1.6 map函数()
map是python内置函数,会根据提供的函数对指定的序列做映射
map()函数的格式是:
map(function,iterable,...)
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。
把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。
map函数实例
当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:
map函数里面的函数参数也可以添加lambda函数()
#获取用户输入的整数n,
#输出所有小于 n 的非负整数 i 的平方( 0 <= i < n )。
n = eval(input())
print(list(map(lambda x: x * x, range(n))))
通过map还可以实现类型转换
将元组转换为list:
map(int,(1,2,3))
# 结果如下:
[1,2,3]
将字符串转换为list:
map(int,'1234')
# 结果如下:
[1,2,3,4]
`提取字典中的key,并将结果放在一个list中:
map(int,{1:2,2:3,3:4})
# 结果如下
[1,2,3]
1.7 (函数)类型建议符
def twoSum(num1: int, num2: int=100) -> int:
函数参数中的冒号是参数的类型建议符,告诉函数调用者希望传入的实参的类型。函数后面跟着的箭头是函数返回值的类型建议符,用来说明该函数返回的值是什么类型。
1.8 round函数
round(x,[,n])
#x为数字表达式,n为小数点后保留几位数,方括号表示默认为零
1.9 f-string
f-strings 提供了一种简洁方便的方式来将 Python 表达式嵌入到字符串文字中以进行格式化。
year = 2016
event = 'Referendum'
f'Results of the {year} {event}'
# 输出结果:'Results of the 2016 Referendum'
1.11 python enumerate用法总结
函数说明:
- enumerate在字典上是枚举、列举的意思
- 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
- enumerate多用于在for循环中得到计数
对一个列表,既要遍历索引又要遍历元素时
list1 = ["这", "是", "一个", "测试"]
for i in range (len(list1)):
print i ,list1[i]
enumerate()方法:
list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1):
print index, item
>>>
0 这
1 是
2 一个
3 测试
2.基础数据结构
2.6 编写一个 Python 程序来接受用户输入的文件名,然后打印文件名和扩展名。
def extract_extension(file_name: str) -> str:
"""提取文件扩展名称"""
extension_name = file_name.split(".")[-1]
return extension_name
text = input()
print(f"输入文件名:{text} 文件的扩展名是:{extract_extension(text)}")
2.7 编写一个 Python 程序打印 az 和 AZ 的英文字母。
from string import ascii_lowercase
from string import ascii_uppercase
for lowercase, uppercase in zip(ascii_lowercase, ascii_uppercase):
print(f"| {lowercase} - {uppercase} |")
#zip 使用压缩文件遍历输出
2.8 python字符串原地逆转
text = input()
print(text[::-1])
2.9 字符处理
text = text.strip() # 去除前后空格
text = " blisdd,bsDisd,SDefs,ahdhjlid,sEfds "
text = text.strip() # 去除前后空格
text_lst = text.split(",")
count = 0
for i in text_lst:
if i[0] == "b" and i[-1] == "d" and "is" in i:
print(f"将符合条件的字符串转化为小写 {i.lower()}")
print(f"将符合条件的字符串转化为大写 {i.upper()}")
count += 1
print(f"字符串中共有符合条件的字符串 {count} 个")
3.结构
3.15
isalpha(): # isalpha() 方法检测字符串是否只由字母组成
isdigit(): # 如果 string 只包含数字则返回 True 否则返回 False
isspace(): # 如果 string 中只包含空格,则返回 True,否则返回 False.
3.19
try:
C = (eval(TempStr[0:-1]) - 32) / 1.8
print("{:.2f}C".format(C))
except SyntaxError:
print("输入格式错误")
#异常输入
try:
s = "零一二三四五六七八九"
i = eval(input())
print(s[i])
except IndexError:
print("请输入0~9之间的数")
except TypeError:
print("请输入整数")
except NameError:
print("请输入正确的名称")
4.4素数判断
def is_prime(n: int) -> bool:
"""素数判断"""
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
else:
return True
#以下是main函数找出最大的素数
def main(n: int) -> list:
"""统计"""
lst = []
count = 0
for i in range(n, 1, -1):
if is_prime(i):
lst.insert(0, i)
count += 1
if count == 10:
return lst
4.4 Python 默认的最大递归深度为 998,在有些情况下是不够的,修改一个 Python 递归函数程序,解决最大递归深度问题。
sys.setrecursionlimit(limit)
#将 Python 解释器堆栈的最大深度设置为 limit。此限制可防止无限递归导致的 C 堆栈溢出和 Python 崩溃。
#不同平台所允许的最高限值不同。当用户有需要深度递归的程序且平台支持更高的限值,可能就需要调高限值。进行该操作需要谨慎,因为过高的限值可能会导致崩溃。
#如果新的限值低于当前的递归深度,将抛出 RecursionError 异常。
#在 3.5.1 版更改: 如果新的限值低于当前的递归深度,现在将抛出 RecursionError 异常。
#用斐波那契数列测试递归更改
import sys
sys.setrecursionlimit(2000)
def fib(n):
if n == 1:
return 1
else:
return fib(n - 1) + n
print(fib(1000))
4.4 Python ord()是什么?
ord()函数主要用来返回对应字符的ascii码
4.15 编写一个 Python 标签装饰器函数,为hello()函数添加
标签和
标签:
def make_p(fn):
"""段落"""
def wrapped():
return "<p>" + fn() + "</p>"
return wrapped
def make_h1(fn):
"""标题"""
def wrapped():
return "<h1>" + fn() + "</h1>"
return wrapped
@make_p
@make_h1
def hello():
return "hello world"
print(hello())