两个list合为字典
python3返回迭代器:
a = [1,2,3];b = [2,3,4]
c = dict(zip(a,b))
python2直接返回list类型,不需要类型转换。
批量转换list中的数据类型
python3返回迭代器:
data = ['1','3.2','2']
data = list(map(eval, data))
data = ['1','3','2']
data = list(map(int, data))
python2直接返回list类型,不需要类型转换。
字符串同时删除多种不同字符
makestrans()和translate()两个函数配合使用:
# maketrans()方法接受的是三个参数,前两个参数需要是长度相同的字符串,第三个字符串是会删除的字符
# translate()方法在python3中只能接受一个参数,这与py2中不同
s1.translate(str.maketrans('','',',。?')
等价于
s2.replace('',',').replace('','。').replace('','?')
删除列表中的重复元素
方法一:直接使用内置函数set(),输出顺序可能有变化
方法二:字典的key输出 ,输出顺序可能有该变化
L = ['d','a','f','d','b','c','d','b','c','a']
print(list({}.fromkeys(L).keys()))
方法三:通过内置sort(),输出顺序无改变
sorted(set(L),key=L.index)
方法四:通过for 循环,输出顺序也无改变。
删除列表中多个符合条件的重复元素
使用filter,比如说想删除列表中全部的‘,’‘。’‘?’
:
data = ['上', '市', '现', '场', ',','。']
condition = lambda t: t != "," and t !='。' and t!='?'
filter_list = list(filter(condition, data))
print(filter_list)
或者:
newdata = [ i for i in data if i != "," and i !='。' and i!='?']
判断变量是否存在
方法一:使用try: … except NameError: …。
try:
var
except NameError:
var_exists = False
else:
var_exists = True
方法二:使用locals()和globals()两个内置函数。
locals() : 基于字典的访问局部变量的方式。键是变量名,值是变量值。
globals() : 基于字典的访问全局变量的方式。键是变量名,值是变量值。
var_exists = 'var' in locals() or 'var' in globals()
方法三:使用内置函数vars()
s=123
if('s' in vars()):
print(s)
else:
print('s does not exist.')
从数组中随机抽样
import random
y=list(range(1,10))
slice = random.sample(y, 5) #从list中随机获取5个元素,作为一个片断返回
print (slice)
print (y) #原有序列并没有改变。
结果:
[8, 5, 6, 2, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
以相同顺序shuffle两个list
import random
randnum = random.randint(0,100)
random.seed(randnum)
random.shuffle(train_x)
random.seed(randnum)
random.shuffle(train_y)
二维数组变一维数组
matrix = [[1,2,3],[4,5,6],[7,8,9]]
listmatrix = [i for j in matrix for i in j]
或者使用numpy
import numpy
a = numpy.array([[2,3], [2,3]])
print(a.reshape(-1)) # [2 3 2 3]
print(a.reshape(1, -1)) # [[2 3 2 3]]
print(a.flatten()) # [2 3 2 3]
取二维数组的某几行和某几列
x = [[1,2,3,3],[4,5,6,6],[7,8,9,9],[10,11,12,12]]
i = 0, j = 0
matrix = [x[j:j + 3] for x in board[i:i + 3]]
或者使用库函数
from itertools import chain
a = [[1, 2], [3, 4], [5, 6]]
list(chain.from_iterable(a))
合并两个numpy矩阵
import numpy as np
a=np.floor(10*np.random.rand(2,2))
a
array([[ 8., 5.],
[ 1., 6.]])
b=np.floor(10*np.random.rand(2,2))
b
array([[ 1., 9.],
[ 8., 5.]])
###hstack()在行上合并
np.hstack((a,b))
array([[ 8., 5., 1., 9.],
[ 1., 6., 8., 5.]])
####vstack()在列上合并
np.vstack((a,b))
array([[ 8., 5.],
[ 1., 6.],
[ 1., 9.],
[ 8., 5.]])