1)问题一
报错:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa0 in position 6605: illegal multibyte sequence
分析:错误就是无法用gbk的方式去解码
解决方案:需要读取的字符串可能不是gbk编码的,解码却用gbk的方式去解码,所以只需要在打开文件的时候指明打开方式
file=open(path,encoding='gbk')
file=open(path,encoding='gb18030')
file=open(path,encoding='gb18030',errors='ignore')
2)问题二
描述:如何将字符串类型的列表—转为真正的列表
from ast import literal_eval
str_list = str([‘a‘,‘b‘,‘c‘])
print(type(str_list)) #字符串类型
# 将str类型的列表转换成类型为list的真正的列表类型
new_list = literal_eval(str_list)
print(type(new_list)) #列表类型
3)问题三
描述:两个列表一一对应,按照其中一个列表进行排序,另外一个列表随之改变,但二者对应关系不发生变化;
if __name__ == '__main__':
scores = [4,5,6,5]
ages = [3,1,2,4]
arr = list(zip(ages, scores))#按照ages进行排序
arr.sort(key=lambda x: (x[0], x[1]))
print(arr)#返回一个元组列表
4)问题四
描述:找出列表中重复元素—以及重复元素的出现次数
参考链接:https://blog.csdn.net/August1226/article/details/82144759
5)问题五
描述:对字典遍历的几种方式
参考链接:https://www.cnblogs.com/stuqx/p/7291948.html
6)问题六
描述:itertools实现排列与组合----combinations重在组合----permutations重在排列
import itertools
if __name__=='__main__':
a=[1,2,3]
combin=list(itertools.combinations('abc',2))#组合
permu=list(itertools.permutations(a,3))#排列
print(combin)
print(permu)
7)问题七
描述:使用list(set(原列表))去进行列表去重,当遇到二维列表报错TypeError: unhashable type: ‘list’
解析:原因是传进set的变量必须是可哈希变量
额外知识:可哈希的元素:int、float、str、tuple-----不可哈希的元素:list、set、dict----注意传入的字典也不行
解决方案:将二维列表中的每一个list转变为元组tuple
a=[[1,2,3],[1,2,3],[2,4]]
tuple_list=list(set([tuple(i) for i in a]))
a_list=[list(i) for i in tuple_list]
print(a_list)
8)问题八
描述:全排列的简单写法
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
res = []
if len(nums) == 1:
return [nums]
for i, num in enumerate(nums):
res_nums = nums[:i] + nums[i + 1:]
for sub_list in self.permute(res_nums):#重点在于
res.append(sub_list + [num])
return res
if __name__=='__main__':
s=Solution()
print(s.permute([1,3,5,6]))
9)问题九
描述:python有现成的内置函数—进制转换
解析:int(a,2)----将二进制的数据转换成10进制(可以换成八进制、16进制)
bin(a)----将十进制的数据转换成二进制
10)问题十
描述:python中的id函数----函数返回对象的唯一标识符,标识符是一个整数—用于获取对象的内存地址;
11)问题十一
描述:pyinstaller将整个脚本整合成一个可执行文件
12)问题十二
描述:列表前加星号 字典前加双星号
解析:列表前加星号-----将列表中所有元素解开成独立的参数
字典前加双星号-----将字典解开成独立的元素作为形参
def compute_sum(a,b):
return a+b
if __name__=='__main__':
a=[i for i in range(1,11)]
print(*a)
b={'a':3,'b':12}
print(compute_sum(**b))