文章目录
两数交换:
def func(a, b):
a, b = b, a
print(a, b)
a = [1, 2]
b = [3, 4]
func(a, b)
print(a, b)
函数传参,函数中的参数是局部变量
对于不可变类型,是将数值拷贝然后进行传递
对于可变类型,是将引用传递进去
堆栈结构调用
函数调用结束后要释放掉
print的方法
end 结尾符号,默认"\n"
flush 是否刷新缓冲区数据到控制台,python的print,默认是将数据写入缓冲区,缓冲区有默认大小,只有数 据大小超出缓冲区限制或者遇到换行符或者手动刷新(flush=True)才会写入到控制台
会默认加入缓冲区
文件读写
f.read() 整个文件读取
f.readline() 大文件使用该方法,一次读取一行
f.readlines() 一次读取一行,读取整个文件,返回一个列表
列表反转
list = [1, 2, 3, 4, 5, 6, 7]
list.reverse()
list[::-1]
list1 = [1, 2, 3, 4, 5, 6, 7]
# list2 = [6, 7, 1, 2, 3, 4, 5]
# 将列表转换成第二个列表,不允许开辟新的空间,只用数据之间位置变换
def reverse(list1, start, end): # 传入索引
while start < end:
list1[start], list1[end] = list1[end], list1[start] # 按照传入的前后索引将对应索引的数据进行转换,实现反转
start += 1 # 初始索引加1
end -= 1 # 末尾索引减1
reverse(list1, 0, 4) # 先将前半段倒序
reverse(list1, 5, 6) # 将后半段倒序
reverse(list1, 0, 6) # 整体倒序,即得到需要的数据
print(list1)
复杂元素排序
from operator import itemgetter, attrgetter
dict1 = {
"item1": 12,
"item2": 16,
"item3": 22
}
list1 = sorted(dict1.items(), key=itemgetter(1))
print(list1)
# 列表中是字典元素
list2 = [
{"name": "b", "age": 12},
{"name": "a", "age": 16},
{"name": "c", "age": 5}
]
list2 = sorted(list2, key=itemgetter("age"))
print(list2)
使用列表实现 栈 和 队列
栈:先进后出
队列:先进先出
给定两个 list A,B,找出其中相同的元素,不同的元素
print(set(A)&set(B))
print(set(a)^set(B))
二维数组转一维
list1 = [[1,2,3],[4,5,6],[7,8,9]]
list2 = [y for x in list1 for y in x]
print(list2)
生成二维数组
# [[1,2,3],[2,4,6],[3,6,9]]
list3 = [[i * j for j in range(1, 4)] for i in range(1, 4)]
print(list3)
list2 = []
for i in range(1, 4):
list1 = []
for j in range(1, 4):
list1.append(i * j)
list2.append(list1)
找到指定范围内的质数的数量
"""
统计所有小于等于非负整数 n 的质数的数量
质数:只能被 1 和自己本身整除的自然数
示例:
输入:10
输出:4
解释:小于等于 10 的质数一共有 4 个,分别是:2,3,5,7
筛选法又称筛法:
具体做法是:先把 N 个自然数按次序排列起来。1 不是质数,也不是合数,要划去。
第二个数 3 是质数留下来,而把 2 后面所有能被 2 整除的数都划去;
2 后面第一个没划去的数是 3,把 3 留下,再把 3 后面所有能被 3 整除的数都划去;
3 后面第一个没划去的数是 5,把 5 留下,再把 5 后面所有能被 5 整除的数都划去;
这样一直做下去,就会把不超过 N 的全部合数都筛选掉,留下的就是不超过 N 的全部质数。
这种方式称为 埃拉托斯特尼的方法 叫做 埃拉托斯特尼筛选法,简称“筛法”
"""
def f(n):
list1 = [True] * (n + 1)
i = 2
while i * i < n:
if list1[i] == True:
j = i * i
while j <= n:
list1[j] = False
j += i
i += 1
count = 0
for i in range(2, n + 1):
if list1[i] == True:
count += 1
return count