一、高级语法实践——基本数据类型
1. 数字、字符串、列表的几种内置方法运用
1.1 数字取最大值、最小值
取最大值使用max()函数,最小值使用min()函数
代码示例:
list_1 = [12, 56, 32, 89, 70, 20]
# 取最大值
print('Max:%d'%max(list_1), end=', ')
# 取最小值
print('Min:%d'%min(list_1))
运行结果如下:
Max:89, Min:12
1.2 字符串的几种内置方法
s.count() # 统计子字符串出现的次数
s.split() # 字符串分隔,默认为所有的空字符,包含空格、换行(\n)、制表符(\t)等
s.replace(old, new, num) # old为被替换字符串,new为替换字符串,num为替换的个数
s.find() # 检索子字符串是否存在,并返回最先出现的索引值
s.lstrip() # 删除字符串左端的一种或多种字符
s.rstrip() # 删除字符串右端的一种或多种字符
字符串操作符
+ # 字符串连接
* # 重复输出字符串
[i:j] # 截取字符串中的一部分
1.3 列表的几种内置方法
l.extend(t) # 列表l末尾添加一个列表t
l.remove(x) # 移除列表l中第一个值为x的元素
l.count(x) # 统计列表中出现元素x的次数
列表操作符
+、*、[i:j] # 与字符串的操作一样
list[-i] # 倒数第i个元素
list[::-1] # 列表倒序
list[j:i:-1] # 输出第i+2个元素到第j+1个元素的倒序
del list[i] # 删除列表中索引为i的元素
2. 推导式
2.1 列表推导式
语法如下:
# 语法一
[value_exp for item in collection if codition]
# 语法二
[value_exp1 if codition else value_exp2 for item in collection]
普通情况下,编写这样的代码是很不便利的:
evens=[]
for i in range(10):
if i%2==0:
evens.append(i)
这种写法可能适用于C语言,但在python中的实际运行速度很慢,原因如下:
- 解释器在每次循环中都需要判断序列中的哪一部分需要修改;
- 需要用一个计数器来跟踪需要处理的元素;
- 由于append()是一个列表方法,所以每次遍历时还需要额外执行一个查询函数。
列表推导式刚好解决这个问题。它使用编排好的功能对上述语法的一部分做了自动化处理:
[i for i in range(10) if i%2==0]
这样写法除了更加高效之外,也更加简短,涉及的语法元素也更少。
2.2 字典推导式
字典推导式与列表推导式的语法很像:
# 语法一
{
key_exp:value_exp for key, value in dict.items() if condition}
# 语法二
{
key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()