当前位置: 代码迷 >> 综合 >> python——list,set,dict,numpy等常规操作
  详细解决方案

python——list,set,dict,numpy等常规操作

热度:107   发布时间:2023-11-24 10:27:43.0

提示:这个是一篇参考资料整理,需要哪个函数直接点击目录查找即可

文章目录

  • 前言
  • 一、List操作
    • index操作
    • apend,extend操作
    • pop()
  • 二、Numpy操作
    • squeeze操作
    • meshgrid 形成网格数据
    • reshape
    • stack
  • 三、dict操作
    • OrderedDict
    • defaultdict
    • in 或者has_key
  • 四、zip操作
  • 五、pandas操作
    • 赋值操作
  • 总结


前言

python——list,set,dict等常规操作


一、List操作

index操作

list.index(x[, start[, end]])
x-- 查找的对象。
start-- 可选,查找的起始位置。
end-- 可选,查找的结束位置。

aList = [123, 'xyz', 'runoob', 'abc']
print "xyz 索引位置: ", aList.index( 'xyz' )
print "runoob 索引位置 : ", aList.index( 'runoob', 1, 3 )

apend,extend操作

  1. 列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型。
  2. append() 方法向列表的尾部添加一个新的元素。只接受一个参数。
  3. extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。

pop()

  • 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

二、Numpy操作

squeeze操作

  • 从数组的形状中删除单维度条目,即把shape中为1的维度去掉
x = np.array([[[0], [1], [2]]])
x.shape
# (1, 3, 1)
np.squeeze(x).shape
# (3,)
np.squeeze(x, axis=0).shape
# (3, 1)
np.squeeze(x, axis=2).shape
#(1, 3)

meshgrid 形成网格数据


import numpy as np#meshgrid 转换成坐标的形式x = np.arange(-5, 5, 1)
y = np.arange(-5, 5, 1)
xx, yy = np.meshgrid(x, y, sparse=True)   # 为一维的矩阵
xx1, yy1 = np.meshgrid(x, y )  # 转换成二维的矩阵坐标'''
xx1
[[-5 -4 -3 -2 -1  0  1  2  3  4][-5 -4 -3 -2 -1  0  1  2  3  4][-5 -4 -3 -2 -1  0  1  2  3  4][-5 -4 -3 -2 -1  0  1  2  3  4][-5 -4 -3 -2 -1  0  1  2  3  4][-5 -4 -3 -2 -1  0  1  2  3  4][-5 -4 -3 -2 -1  0  1  2  3  4][-5 -4 -3 -2 -1  0  1  2  3  4][-5 -4 -3 -2 -1  0  1  2  3  4][-5 -4 -3 -2 -1  0  1  2  3  4]]
yy1
[[-5 -5 -5 -5 -5 -5 -5 -5 -5 -5][-4 -4 -4 -4 -4 -4 -4 -4 -4 -4][-3 -3 -3 -3 -3 -3 -3 -3 -3 -3][-2 -2 -2 -2 -2 -2 -2 -2 -2 -2][-1 -1 -1 -1 -1 -1 -1 -1 -1 -1][ 0  0  0  0  0  0  0  0  0  0][ 1  1  1  1  1  1  1  1  1  1][ 2  2  2  2  2  2  2  2  2  2][ 3  3  3  3  3  3  3  3  3  3][ 4  4  4  4  4  4  4  4  4  4]]

reshape

在这里插入图片描述

stack

import numpy as np# stack()是按照不同轴的堆叠方式重新堆叠数组a=[[1,2,3],[4,5,6]]np.stack(a,axis=0)
# array([[1, 2, 3],
# [4, 5, 6]])np.stack(a,axis=1)
# array([[1, 4],
# [2, 5],
# [3, 6]])#可以看出axis=0是把原来的元素按照横轴的方式排列,axis=1是把原先元素按照纵轴排列# 更多的例子a=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]np.stack(a,axis=0)
#array([[ 1, 2, 3, 4],
# [ 5, 6, 7, 8],
# [ 9, 10, 11, 12]])np.stack(a,axis=1)
#array([[ 1, 5, 9],
# [ 2, 6, 10],
# [ 3, 7, 11],
# [ 4, 8, 12]])a=[1,2,3,4]b=[5,6,7,8]c=[9,10,11,12]np.stack((a,b,c),axis=0)
#array([[ 1, 2, 3, 4],
# [ 5, 6, 7, 8],
# [ 9, 10, 11, 12]])np.stack((a,b,c),axis=1)
#array([[ 1, 5, 9],
# [ 2, 6, 10],
# [ 3, 7, 11],
# [ 4, 8, 12]])a=[[1,2,3],[4,5,6]]b=[[7,8,9],[10,11,12]]c=[[13,14,15],[16,17,18]]np.stack((a,b,c),axis=0)
#array([[[ 1, 2, 3],
# [ 4, 5, 6]],# [[ 7, 8, 9],
# [10, 11, 12]],# [[13, 14, 15],
# [16, 17, 18]]])np.stack((a,b,c),axis=1)
#array([[[ 1, 2, 3],
# [ 7, 8, 9],
# [13, 14, 15]],# [[ 4, 5, 6],
# [10, 11, 12],
# [16, 17, 18]]])#hstack()、vstack()是按元素进行堆叠而不是数组的形状堆叠,具体与stack的区别后面有个例子a=[1,2,3]b=[4,5,6]np.hstack((a,b))
#array([1, 2, 3, 4, 5, 6])np.vstack((a,b))
#array([[1, 2, 3],
# [4, 5, 6]])#我们来看一下这三个函数对于复杂的矩阵堆叠的区别a=[[1],[2],[3]]b=[[4],[5],[6]]c=[[7],[8],[9]]np.stack((a,b,c),axis=0)
#array([[[1],
# [2],
# [3]],# [[4],
# [5],
# [6]],# [[7],
# [8],
# [9]]])np.stack((a,b,c),axis=1)
#array([[[1],
# [4],
# [7]],# [[2],
# [5],
# [8]],# [[3],
# [6],
3        [9]]])np.hstack((a,b,c))
#array([[1, 4, 7],
# [2, 5, 8],
# [3, 6, 9]])np.vstack((a,b,c))
#array([[1],
# [2],
# [3],
# [4],
# [5],
# [6],
# [7],
# [8],
# [9]])#再来看一个
a=[[1,2,3],[4,5,6]]b=[[7,8,9],[10,11,12]]c=[[13,14,15],[16,17,18]]np.stack((a,b,c),axis=0)
#array([[[ 1, 2, 3],
# [ 4, 5, 6]],# [[ 7, 8, 9],
# [10, 11, 12]],# [[13, 14, 15],
# [16, 17, 18]]])np.stack((a,b,c),axis=1)
#array([[[ 1, 2, 3],
# [ 7, 8, 9],
# [13, 14, 15]],# [[ 4, 5, 6],
# [10, 11, 12],
# [16, 17, 18]]])np.hstack((a,b,c))
#array([[ 1, 2, 3, 7, 8, 9, 13, 14, 15],
# [ 4, 5, 6, 10, 11, 12, 16, 17, 18]])np.vstack((a,b,c))
#array([[ 1, 2, 3],
# [ 4, 5, 6],
# [ 7, 8, 9],
# [10, 11, 12],
# [13, 14, 15],
# [16, 17, 18]])#可以看出stack是在不破坏原有矩阵形状的情况下按照横或纵的方式堆叠,hstack和vstack更进一步,打破了原有矩阵的结

三、dict操作

OrderedDict

import collectionsdic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
print(dic)#输出:OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])

defaultdict

  • default_factory 接收一个工厂函数作为参数, 例如int str list set等.
    defaultdict在dict的基础上添加了一个__missing__(key)方法, 在调用一个不存的key的时候, defaultdict会调用__missing__, 返回一个根据default_factory参数的默认值, 所以不会返回Keyerror.

in 或者has_key

  • 两者都是判断一个key是否存在于某一字典中。两者结果是一致的。
    has_key()方法是老版本python中的方法,主要是兼容python2.2以前版本的方法,在python3中已经被删除。
    同时in的写法更符合python简单明了的特点。
    因此推荐使用 in 写法来判断,即

四、zip操作

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [7,8,9]
>>> z = zip(a,b,c)
>>> z
<zip object at 0x0000000002B86408> #返回的是一个对象
>>> list(z)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)] #使用list()函数转换为列表
>>> list(zip(a,c))
[(1, 7), (2, 8), (3, 9)]

五、pandas操作

赋值操作

赋值操作


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  相关解决方案