python字符串、列表、数组、变量等高频常见使用技巧

两个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.]])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值