Python常用零碎

版权声明:苍生苦难,不知伊于胡底 https://blog.csdn.net/qq_40527086/article/details/84258693

numpy

  • 产生随机整数并写入txt文件
import numpy as np
#np.random.randint(low,high,size)
rand_data = np.random.randint(10,150,10)
print rand_data
np.savetxt("rand_int.txt", rand_data)

产生随机数

[143  32  98  35 116 133 121 115 130 132]

如果是列表随机数存储,则可以用Open命令。

with open('data.txt','w')  as f:
	f.write(str(list_data)); 
  • 获取时间戳及计时(秒数)
import time
time_start = time.time()#获取时间戳
time.sleep(2)
time_end = time.time()
Used_time = time_end - time_start

也可以

import datetime
import time
a = datetime.datetime.now()
time.sleep(2)
b =  datetime.datetime.now()
Used_time = (b - a).seconds

pandas

  • 删除一些样本后记得重置行索引,否则影响下一步的索引。

  • 按某列取非重复值的样本

>>>import pandas as pd  
>>>data={'state':[1,1,2,2,1,2,2],'pop':['a','b','c','d','b','c','d']}
>>>frame=pd.DataFrame(data)  
>>>frame
	pop	state
0	a	1
1	b	1
2	c	2
3	d	2
4	b	1
5	c	2
6	d	2
>>>a = frame.drop_duplicates(subset=['pop'],keep='first')  # 将重复数据保留一个(keep='first)
>>>a
	pop	state
0	a	1
1	b	1
2	c	2
3	d	2
>>>b = frame.drop_duplicates(subset=['pop'],keep=False) # 将重复数据全部去除(keep=False)
>>>b
	pop	state
0	a	1
>>>a.append(b).drop_duplicates(subset=['pop'],keep=False) # 将重复数据保留一个(keep='first)
	pop	state
1	b	1
2	c	2
3	d	2

Tkinter

MySQLdb

  • python2.7 查询或者插入中文数据在mysql中的时候出现中文乱码的解决
    可能情况:
    1.mysql数据库各项没有设置编码,默认为’latin’
    2.使用MySQL.connect的时候没有设置默认编码
    3.没有设置python的编码,python2.7默认为’ascii’
    4.没有解码

设置默认编码

# -*-coding:utf-8 -*-
import sys 
reload(sys)
sys.setdefaultencoding('utf-8')

记得解码

t = cursor.fetchall()
s = t[0][1].decode('utf-8')

Others

  • dir(BIF)获取内置函数列表
  • help(BIF)提供帮助
    比如:
dir(list)
-OUT:'__rmul__',
 '__setattr__',
 '__setitem__',
 '__setslice__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 'append',
 'count',
 'extend',
 'index',
 'insert',
 'pop',
 'remove',
 'reverse',
 'sort']
  • 判断变量类型 isinstance函数
a = 'LK (❤ ω ❤)PSR'
isinstance(a,str)
Out[2]: True

  • 类似C语言的三元操作符
    (很简洁明了但是不建议使用)
small = x if x<y else y
  • Assert断言,可以用于测试,在判断为假时直接终止进程
    抛出AssertionError的异常。
assert 3>4
[OUT2]:Traceback (most recent call last):
  File "D:\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 2882, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-6-ccf53c07db24>", line 1, in <module>
    assert 3>4
AssertionError

List

name = ['LK12','PSR','James','LD']
# 添加元素
name.append('狗蛋') #在循环中常用
name.extend(['飞翔哥','印光大师'])
name.insert(1,'废物')
# 删除元素
name.remove('LK12')
name.pop(2)
del name
name.pop()
# 列表分片
name[1:4]
name[0:4:2]
name[::-1] #实现倒置,也可以name.reverse()
# 判断是否存在
’LK12' in name
'PSR' not in name
# 计数
name.count('LK12')
# 返回索引
name.index('LK12')
# 排序
name.sort()
name.sort(reverse=True)
# 复制
name1 = name[:] # 两者的值不会一起变
name1 = name # 两者的值会一起变,共用同一地址

Strings

  • join分隔符和split,两者互为逆变换
    这是一个神奇且有用的命令,程序员喜欢用它来分开字符串
    例如:
‘-'.join('lk12')
Out[7]: 'l-k-1-2'
str1 = 'l-k-1-2'
str1.split(sep='-')

' '.join(['I','love','you'])
Out[4]: 'I love you'
str2 = 'I love you'
str2.split()
  • replace替换符
str1 =  'I love you'
str1.replace('you','lk12')
  • 对应字符互相组合 zip
    举个例子感受下
list1 = [1,2,3,4]
list2 = ['lk1','lk2','lk3','lk4']
print zip(list1,list2)
#返回一个组合后的新列表
-- [(1, 'lk1'), (2, 'lk2'), (3, 'lk3'), (4, 'lk4')]

function

  • 如果希望在函数内部修改函数外部局部变量的值,可以使用global.如果不这样做,函数内部不会对外部的变量真正产生修改,而是重新生成了一个同名的变量进行修改。但是对应局部定义的全局变量,只适合对其进行引用,不适合对其进行修改。否则会发生意想不到的错误。
def fun1():
    x = 1

    def fun2():
        nonlocal x
        x = 2
        return x
    return fun2


x1 = fun1()()
print(x1)
>>2
  • 三个有趣的BIF
g = lambda x, y: x+y
print(g(1, 2))

f = filter(lambda x: x % 2, [1, 2, 3,  4, 5])
print(list(f))

m = list(map(lambda x: x*2, [1, 2, 3]))
print(m)

  • 递归思想值得借鉴,但是耗时比传统方法长,而且不熟练容易引发异常。

猜你喜欢

转载自blog.csdn.net/qq_40527086/article/details/84258693