目录
1 python 的变量、对象和引用?
2 python里面如何生成随机数?
3 创建百万级实例如何节省内存?
4 什么是python中的类型转换?
5 什么是python的作用域?
6 什么是python自省?
7 什么是PEP 8 编码风格?
8 关于python 程序的运行方面,有什么手段能提升性能?
9 dict的items()方法与iteritems()方法的不同?
10 os.path 和 sys.path 的区别?
11 三元运算规则?
12 zip函数的使用方法?
13 with 方法打开文件的作用?
14 字符串转整数?
15 字符串单词统计
16 一行代码实现xx类题目
17 字典和json的区别?
18 Python中的os模块常见方法?
在python中用于生成随机数的模块是random,在使用之前需要import.
random.random() | 生成一个0-1之间的随机浮点数 |
random.uniform(a, b) | 生成[a, b]之间的浮点数 |
random.randint(a, b) | 生成[a, b]之间的整数 |
random.randrange(a, b, step) | 在指定的集合[a, b)中,以step为基数 随机取一个数 |
random.choice(sequence) | 从特定序列中随机取一个元素,可以是字符串、列表、元组等 |
可以定义类的slot属性,用它来声明实例属性的列表,可以减少内存空间的目的。
class User2:
__slot__ = ['id', 'name', 'sex', 'status']
def __init__(self, id, name, sex, status):
self.id = id
self.name = name
self.sex = sex
self.status = status
上边的例子相较于建立普通的类的方法,没有{'__weakref__', '__dict__'}两个属性,在不弱引用的情况下weakref不占用多少内存,而dict属性占用大量内存。内存检测方式调用sys模块中的getsizeof()函数。
类型转换就是指将一种数据类型转换为另一种数据类型。
int() | 将任何数据类型转换为整数型 |
float() | 将任何数据类型转换为小数型 |
ord() | 将字符转化为整数 |
tuple() | 转换为元组 |
list() | 将任何数据类型转换为列表型 |
set() | 转换为set型后返回 |
dict() | 将顺序元组(键, 值)转换为字典 |
str() | 整数转换为字符串 |
complex(real, imag) | 将实数转换为复数 |
hex() | 将整数转化为十六进制 |
oct() | 将整数转化为八进制 |
语言区分作用域,是为了复用变量名。引入作用域,相当于给变量划分了各自的‘隔离区’,在不同‘隔离区’里,查找变量变得很容易。
python是动态类型的语言,变量是在定义的时候赋值的。
变量作用域取决于其定义的位置。在python里,只有函数、类、模块才会产生作用域,代码块不会产生作用域。
在计算机编程领域里,自省是一种能力,是通过一定机制在程序运行时获知对象的类型及对象的内部结构,Python的自省能力还是很强大的,因为Python中一切皆对象,我们不仅可以获取对象的类型,还可以获取对象内部的属性。
items方法将所有的字典以列表的方式返回,其中项再返回的时候没有特殊的顺序。
iteritems方法有相似的作用,但是返回一个迭代器对象
os.path是module,包含了各种处理长文件名的函数
sys.path是由目录名构成的列表
如果a>b成立,那么就输出a - b,否则a+b
a, b = 1, 2
h = a - b if a > b else a + b
print(h)
3
zip()函数将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回这些元组组成的列表。
list1 = ['zhang', 'wang', 'liu']
list2 = [0, 1, 2]
list(zip(list1, list2))
[('zhang', 0), ('wang', 1), ('liu', 2)]
打开文件在进行读写的时候可能会出现一些异常,如果按照常规的f.open()写法,我们需要try,except, finnally,做异常判断,并且文件不管遇到什么情况,都需要执行f.close()关闭文件,with方法帮我们实现了finally中f.close()。
with open("hello.txt", "a") as f:
f.write("hello write!")
s = ('1,2,3,4,5,6,7,8,9')
list(map(lambda x: int(x), s.split(",")))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
统计字符串中字母个数:
from collections import Counter
mystr = "sadad, dasda, asda, dasd"
Counter(mystr)
Counter({'s': 4, 'a': 7, 'd': 7, ',': 3, ' ': 3})
统计字符串中单词的个数:
mystr = "sadad, dasda, asda, dasd"
len(mystr.split(" "))
4
1 一行代码实现1-100的和
sum(range(1,101))
5050
2 实现数值交换
a = 1
b = 2
a, b = 2, 1
print(a, b)
2 1
3 一行代码求奇偶
[x for x in range(10) if x % 2 == 1]
[1, 3, 5, 7, 9]
4 一行代码展开列表
ls = [[1, 2, 3], [4, 5, 6]]
[j for i in ls for j in i]
[1, 2, 3, 4, 5, 6]
5 一行代码打乱列表
import random
ls = [1, 2, 3, 4, 5]
random.shuffle(ls)
ls
[2, 5, 4, 1, 3]
6 一行代码反转字符
mystr = "zheshishenme"
mystr[::-1]
'emnehsihsehz'
7 查看目录下所有文件
import os
os.listdir()
8 一行代码去除字符串间的空格
ls = "my name is haha"
ls.replace(" ", "")
'mynameishaha'
ls = "my name is haha"
"".join(ls.split(" "))
'mynameishaha'
9 一行代码实现字符串整数列表变成整数列表
a = ["1", "2", "3"]
list(map(lambda x: int(x), a))
[1, 2, 3]
10 一行代码删除列表中重复的值
mylist = [1, 2, 2, 3, 3]
list(set(mylist))
[1, 2, 3]
11 一行代码实现9*9乘法表
print('\n'.join([" ".join(['%s*%s=%-2s' % (j, i, i * j) for j in range(1, i + 1)]) for i in range(1, 10)]))
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
12 一行代码找出两个列表相同的元素
a = [1, 2, 3, 4]
b = [3, 4, 5, 7]
set(a) & set(b)
{3, 4}
13 一行代码找出两个列表不同的元素
a = [1, 2, 3, 4]
b = [3, 4, 5, 7]
set(a) ^ set(b)
{1, 2, 5, 7}
14一行代码合并两个字典
ls1 = {"na": "None"}
ls2 = {"lv": "sign"}
ls1.update(ls2)
ls1
{'na': 'None', 'lv': 'sign'}
15 一行代码实现字典键从小到大排序
ls = {"na": "100", "la": "13", "za": "ph"}
sorted(ls.items(), key = lambda x: x[0])
[('la', '13'), ('na', '100'), ('za', 'ph')]
字典是一种数据结构,json是一种数据的表现形式,字典 的key值只要是能hash的就行,json必须是字符串。
os.remove() | 删除文件 |
os.rename() | 重命名文件 |
os.walk() |
生成目录树下的所有文件 |
os.chdir() | 改变目录 |
os.mkdir/makedirs() | 创建目录\多层目录 |
os.rmdir/removedirs() | 删除目录\多层目录 |
os.listdir() | 列出指定目录的文件 |
os.getcwd() | 取得当前工作目录 |
os.chmod() | 改变目录权限 |
os.path.basename() | 去掉目录路径,返回文件名 |
os.path.dirname() | 去掉文件名,返回目录路径 |
os.path.join() | 将分离的各部分组成一个路径名 |
os.path.split() | 返回(dirname(), basename())元组 |
os.path.splitext() | 返回(filename, extension)元组 |
os.path.getatime\ctime\mtime() | 分别返回最近访问、创建、修改时间 |
os.path.getsize() | 返回文件大小 |
os.path.exists() | 是否存在 |
os.path.isabs() | 是否为绝对路径 |
os.path.isdir() | 是否为目录 |
os.path.isfile() | 是否为文件 |
参考:
(3条消息) 《Python进阶系列》二十六:面试题目:[lambda x: x*i for i in range(4)]_奋斗的西瓜瓜的博客-CSDN博客_def fun1(): return [lambda x: i * x for i in range
(3条消息) 【Python八股文系列】:100个Python的面试/笔试高频考点_奋斗的西瓜瓜的博客-CSDN博客_python八股文