Python---实践中遇到的问题及解决方案

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))

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LH-Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值