Python笔记

一、python不常用模块

1. bisect模块

参考:https://blog.csdn.net/u014120401/article/details/78808476

  1. bisect

bisect.bisect(seq, item, lo = 0, hi =len(list_name))

在有序列表 seq 中查找 item 的位置,并且返回其 索引 (index),使得插入item后序列依然保持有序

有两个可选参数 lo 和 hi 来缩小搜索范围,lo 的默认值为 0 ,hi 的默认值为序列的长度。

直接使用 insort 插入比先使用 bisect 再使用 insert 速度更快

>>> import bisect
>>> a = [3,4,6,7,9]
>>> b = bisect.bisect(a,8)
>>> b
4
>>> a.insert(b,8)
>>> b = bisect.bisect(a,8.0)
>>> b
5
>>> a.insert(b,8.0)
>>> a
[3, 4, 6, 7, 8, 8.0, 9]
>>> b = bisect.bisect_left(a,7.0)
>>> a.insert(b,7.0)
>>> a
[3, 4, 6, 7.0, 7, 8, 8.0, 9]

bisect 函数是 bisect_right 函数的别名,返回的索引是原序列相等元素之后的位置,即新元素插入在旧元素的右边
bisect_left 函数返回的索引是原序列中相等元素的位置,新元素插入在旧元素的左边
  1. insort

insort(seq, item, lo, hi) 把变量 item 插入到序列 seq 中,并保持 seq 升序

>>> a
[3, 4, 6, 6.0, 7.0, 7, 8, 8.0, 9]
>>> bisect.insort_left(a,3.0)
>>> a
[3.0, 3, 4, 6, 6.0, 7.0, 7, 8, 8.0, 9]

2. heapq模块

https://www.jianshu.com/p/e003872fa7b9

import heapq
heap = []
n = 9
heapq.heappush(heap, n) # 把n放入到heap堆中
heapq.heappop(heap) # pop出heap堆中最小的元素
print(heapq[0]) # 输出heap堆中最小的元素

3. dict初始化方法

>>> dict(a=1, b=2)
>>> {'a': 1, 'b': 2}

4. collections.defaultdict

二、python易忽略语法

1. 导入自己写的文件夹下的py文件

import sys
sys.path.append('./ch6/')
import ***
  • 此时已经进入 到当前文件夹'./ch6/'下,可以直接导入该文件夹下的***.py文件

2. @staticmethod

https://www.runoob.com/python/python-func-staticmethod.html

一个例子就明白~

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class C(object):
    @staticmethod
    def f():
        print('runoob');
 
C.f();          # 静态方法无需实例化
cobj = C()
cobj.f()        # 也可以实例化后调用
  • 以及与classmethod的区别

https://blog.csdn.net/handsomekang/article/details/9615239

3. 知晓python中的标识符

import keyword
print(keyword.kwlist)

4. subprocess的shell为False的命令

cmd = [‘python3.7’, ‘main.py’]
subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE)

三、python面向对象

1. 魔法方法对应的显式调用

https://www.liujiangblog.com/course/python/47

四、疑难杂症

1. pycharm中模块安装失败的解决办法

  • 错误1:ReadTimeoutError

解决方案:cmd中执行:
pip --default-timeout=100 install ***

  • 错误2:Pycharm安装失败

解决方案:cmd中执行:
python -m pip install -U pip
pip install ***

  • 错误3:Pycharm中安装失败2

解决方案:装库时勾选下面的按钮
在这里插入图片描述

2. python3.7解决ModuleNotFoundError: No module named ‘_bz2’

看了一堆些常见的解决教程,都不好用,后来看了了stackflow发现了问题:

https://stackoverflow.com/questions/12806122/missing-python-bz2-module

linux下使用官方source release安装会出现这个问题,而apt-get之类的则不会。

由于缺少root权限,也没有yum可以用,所以好多方法都不好用。直到看到这篇:

Linux下非Root用户解决ImportError: No module named bz2

说白了少个文件,它不一定叫bz2.so,但是大概是lib-dynload文件下的含有bz2的so文件,复制到自己的python的同名文件夹下就好了。

路径全称:/usr/local/python3.7.5/lib/python3.7/lib-dynload/

我找到的文件叫:_bz2.cpython-35m-x86_64-linux-gnu.so

里面-35m是版本对应的,也必须改,例如:我的python3.7版本就直接重命名-37m。
————————————————
版权声明:本文为CSDN博主「子曰小玖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wxh0000mm/article/details/96318779

3. 报错信息:/usr/bin/python: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

解决方案:

which python

ldd /usr/bin/python

find / -name “libpython3.7m.so.1.0” 找到路径:/usr/local/lib/libpython3.7m.so.1.0

/etc/ld.so.conf.d目录,创建文件python3.conf,加入这个库所在的路径/usr/local/lib

ldconfig

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Thomas_Cai

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

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

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

打赏作者

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

抵扣说明:

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

余额充值