1.list的remove问题
用remove删除for循环下的list中元素'1',只会删除从当前位置(程序中的i)开始第一个元素'1'。
测试代码:
class test():
def __init__(self,a):
self.a = a
if __name__=="__main__":
list=[]
l = ['1','1','2','2','1','1','2','2','1','1','2','2']
list.append(test(1))
list.append(test(1))
list.append(test(2))
list.append(test(1))
list.append(test(2))
list.append(test(1))
list.append(test(1))
list.append(test(1))
list.append(test(1))
list.append(test(3))
list.append(test(1))
list.append(test(1))
list.append(test(3))
list.append(test(3))
for x in range(0,len(list)):
print(list[x],list[x].a)
for i in list:
if i.a==1:
print(i.a)
list.remove(i)
for x in range(0,len(list)):
print(list[x],list[x].a)
参考网站:
http://www.runoob.com/python/att-list-remove.html
https://blog.csdn.net/guan666/article/details/71511948
2.导入包的路径
import sys
sys.path.append('所需包路径')
sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。
参考网站:http://www.runoob.com/python3/python3-module.html
3.python函数传不定长参数
1)形参写为*arg--表示传入的参数会以元组tuple形式传入;
2)形参写为**arg--表示传入的参数会以字典dict形式传入。
示例代码:
def testTuple(*arg):
print(arg)
def testDict(**arg):
print(arg)
if __name__=="__main__":
testTuple(1,2,"3","4")
testDict(a1=1,a2=2,a3="3",a4="4")
输出结果:
(1, 2, '3', '4')
{'a1': 1, 'a3': '3', 'a2': 2, 'a4': '4'}
4.调试技巧
1)在想设置的断点处插入一句:import pdb;pdb.set_trace()
2)查看某一参数内容:p param(打印参数);查看参数属性、方法列表:dir(param)
5.类的静态方法
参考网站:https://blog.csdn.net/polyhedronx/article/details/81911548
在类的方法前加入@staticmethod,如:
class BaseHello(object):
model = 1
……
def set_model_general(self,model):
self.model = model
@staticmethod
def set_model_static(model):
BaseHello.model = model
一般的类方法需要先实例化,再调用。
A = BaseHello()
A.set_model_general(10)
但是类的静态方法可以不需要实例化,直接类名.方法名()来调用
BaseHello.set_model_general(10)
6.list中多级for循环嵌套
def get_im_name_list(im_path,im_ext=".png"):
im_list=[]
for _,dirs,files in os.walk(im_path):
for f in files:
if os.path.splitext(f)[-1]==im_ext:
im_list.append(os.path.join(_,f))
return im_list
可改写如下:(依次排列在list中即可)
def get_im_name_list(im_path,im_ext=".png"):
im_list = [os.path.join(_,f) for _,dirs,files in os.walk(im_path) for f in files if os.path.splitext(f)[-1]==im_ext]
return im_list
7.ImportError
Linux系统下,报类似的错误,如:ImportError: No module named builtins,无非存在两个方面的问题:
①未安装相应的包
直接pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $package name$或者$related package$
②安装了相应的包,执行python未包含响应包的路径
如python3包路径在/usr/local/lib/python3.5/dist-packages,并且这个路径下已经安装了相应的包,则使用如下命令添加PYTHONPATH即可:export PYTHONPATH=/usr/local/lib/python3.5/dist-packages:$PYTHONPATH
或者把这条命令添加到/home/ubuntu/.bashrc(当前用户执行环境变量)中,然后执行source /home/ubuntu/.bashrc