一、代码规范

1. utils 文件夹存放重复使用的 .py 文件

二、基础

1. 字符串,列表或元组支持成员运算符 in, not in

2. 多行语句的连接

python 输出程序用时_python 输出程序用时

3. 多条语句放一行,用分号连接 ";"

4. print 输出默认换行

        可指定输出末尾

# 输出不换行
print(x, end="")
# 输出不换行,且以空格结尾
print(x, end=" ")

5. 逻辑运算

python 输出程序用时_字符串_02

三、数据类型

Number(数字)

bool 是 int 的子类,True 和 False 可以和数字相加

>>> True==1
True
>>> False==0
True
>>> True+1
2
>>> 2 / 4  # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 2 ** 5 # 乘方
32

指定小数位数

print("{:.3f}".format(ans))

字符串转为int,并计算将其作为二进制输出的十进制值 

ans = "1111"
print(int(ans, 2)) # 15

 String(字符串)

  • 使用三引号(''' 或 """)可以指定一个多行字符串
  • 转义符 \
  • 字符串可以用 + 运算符连接在一起,用 * 运算符重复
  • Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始
  • Python 中的字符串不能改变
  • 向一个索引位置赋值,比如 word[0] = 'm' 会导致错误
print(str[2:5])            # 输出从第三个开始到第六个的字符(不包含)
print(str[2:])             # 输出从第三个开始后的所有字符
print(str[1:5:2])          # 输出从第二个开始到第五个且每隔一个的字符(步长为2)

bool

 在 Python 中,所有非零的数字和非空的字符串、列表、元组等数据类型都被视为 True,只有 0、空字符串、空列表、空元组等被视为 False

List(列表)

列表的元素可以修改,列表的元素类型可以不同

列表是写在方括号 [] 之间、用逗号分隔开的元素列表

和 String 一样,+ 是连接,* 是重复

Tuple(元组)

元组写在小括号 () 里,元素之间用逗号隔开

元组的元素不能修改,元组的元素类型可以不同

元组可以包含可变对象,如 List

可 + 可 *

构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

string、list 和 tuple 都属于 sequence(序列)

Set(集合)

集合(Set)是一种无序、可变的数据类型,用于存储唯一的元素

集合使用大括号 {} 表示,元素之间用逗号 , 分隔

创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

#!/usr/bin/python3

sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}

print(sites)   # 输出集合,重复的元素被自动去掉

# 成员测试
if 'Runoob' in sites :
    print('Runoob 在集合中')
else :
    print('Runoob 不在集合中')


# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')

print(a)
print(a - b)     # a 和 b 的差集
print(a | b)     # a 和 b 的并集
print(a & b)     # a 和 b 的交集
print(a ^ b)     # a 和 b 中不同时存在的元素

Dictionary(字典)

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取

字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合

在字典中遍历时,关键字和对应的值可以使用 items() 方法同时解读出来:

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
...     print(k, v)
...
gallahad the pure
robin the brave

四、常用语句

输入输出相关语句

1. format格式化

简写:

f'{timer.stop():.5f} sec'

 输出:

0.02684 sec

绘图

1. 散点图

d2l.plt.scatter(features[:, 1].detach().numpy(), labels.detach().numpy(), 1)
scatter:散点图
features[:, 1]:取矩阵features的第二列
detach():分离张量,新的张量与原始张量值相同,但不再关联
numpy():将该张量转换为NumPy数组

1:散点的直径大小

遍历

1. for in zip() 并行遍历

for x, y in zip(list_1, list_2):
    print(x, y)

条件控制语句

if语句的关键字为:if – elif – else

循环语句

1)while

while counter <= n:
    sum = sum + counter
    counter += 1

# 无限循环
var = 1
while var == 1:
    # ...

# while 循环使用 else 语句
while <expr>:
    <statement(s)>
else:
    <additional_statement(s)>

2)for

# for语句语法
for item in iterable:
    # 循环主体
else:
    # 循环结束后执行的代码
    # 如果在循环过程中遇到了 break 语句,则会中断循环,此时不会执行 else 子句

# 遍历列表
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
    print(site)

# 遍历字符串
word = 'runoob'
for letter in word:
    print(letter)

# range函数
#  1 到 5 的所有数字:
for number in range(1, 6):
    print(number)

3)break

4)contiue

5)pass

pass是空语句,是为了保持程序结构的完整性

for letter in 'Runoob': 
   if letter == 'o':
      pass
   print ('当前字母 :', letter)

五、 常用工具

迭代器与生成器

1. 迭代器

2. 生成器

        使用了 yield 语句的函数为生成器

        当在生成器函数中使用 yield 语句时,函数的执行将会暂停,并将 yield 后面的表达式作为当前迭代的值返回。

        然后,每次调用生成器的 next() 方法或使用 for 循环进行迭代时,函数会从上次暂停的地方继续执行,直到再次遇到 yield 语句。这样,生成器函数可以逐步产生值,而不需要一次性计算并返回所有结果。

def countdown(n):
    while n > 0:
        yield n
        n -= 1
 
# 创建生成器对象
generator = countdown(5)
 
# 通过迭代生成器获取值
print(next(generator))  # 输出: 5
print(next(generator))  # 输出: 4
print(next(generator))  # 输出: 3
 
# 使用 for 循环迭代生成器
for value in generator:
    print(value)  # 输出: 2 1

lambda函数

map 函数:使得 iterable 里的每个元素执行一次 function

map(function, iterable)

numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)  # 输出: [1, 4, 9, 16, 25]

reduce函数:reduce函数先从列表(或序列)中取出2个元素执行指定函数,并将输出结果与第3个元素传入函数,输出结果再与第4个元素传入函数,…,以此类推,直到列表每个元素都取完。

from functools import reduce
 
numbers = [1, 2, 3, 4, 5]
 
# 使用 reduce() 和 lambda 函数计算乘积
product = reduce(lambda x, y: x * y, numbers)
 
print(product)  # 输出:120