文章目录

  • 1、列表
  • 2、数组(array)
  • 3、程序举例
    • 3.1 创建
    • 3.2 元素访问
      • 3.2.1一维数组、列表访问
      • 3.2.2 二维数组、列表访问
    • 3.3 浅拷贝与深拷贝

1、列表

list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。列表中的项目。列表中的项目应该包括在方括号中,这样python就知道你是在指明一个列表。一旦你创建了一个列表,你就可以添加,删除,或者是搜索列表中的项目。由于你可以增加或删除项目,我们说列表是可变的数据类型,即这种类型是可以被改变的,并且列表是可以嵌套的。

列表是可以改变的,能够增加或减少,(append和del函数)

2、数组(array)

Numpy是专门针对数组的操作和运算进行了设计,所以数组的存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显。通常Numpy数组中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的,所以在通用性能方面Numpy数组不及Python列表,但在科学计算中,可以省掉很多循环语句,代码使用方面比Python列表简单的多。

在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,‘a’]需要4个指针和四个数据,增加了存储和消耗cpu。

numpy中封装的array有很强大的功能,里面存放的都是相同的数据类型

3、程序举例

3.1 创建

列表list的创建:

x = list()
x.append(1)
x.extend([2,3,4])
print(x)x = [1,2,3,4,5]
print(x)

这里需要注意append和extend的区别,append将所有内容当做一个元素加入到列表的后面。

numpy数组创建:

import numpy as np
#常规创建
a=np.array((1,2,3))#参数是tuple
b=np.array([6,7,8])#参数是list
c=np.array([[1,2,3],[4,5,6]])#参数是二维list#其他方法创建
arr1=np.arange(1,10,1)
arr2=np.linspace(1,10,10)
  • np.arange(a,b,c)表示产生从a-b不包括b,间隔为c的一个array,数据类型默认是int32。
  • linspace(a,b,c)表示的是把a-b平均分成c分,它包括b

3.2 元素访问

3.2.1一维数组、列表访问


列表索引

x = [0,1,2,3,4,5,6,7,8,9]print(x[5])
print(x[1:3])
print(x[5:])
print(x[-1])
print(x[1:-1:2])
print(x[::-1])

numpy数组的访问

x = [0,1,2,3,4,5,6,7,8,9]
x = np.array(x)
print(x[5])
print(x[1:3])
print(x[5:])
print(x[-1])
print(x[1:-1:2])
print(x[::-1])

3.2.2 二维数组、列表访问

对于二维数组arr=np.array([[1,2,3],[4,5,6]])举例

列表:

x = [[1,2,3],[4,5,6]]print(x[1:2])
print(x[1:2][0])
print(x[1])
print(x[0][0])

数组:

x=np.array([[1,2,3],[4,5,6]])print(x[1:2])
print(x[1:2][0])
print(x[1])
print(x[0][0])
print(x[0,0])

区别:在列表list中,不能使用x[0,0,]来访问第1行第一列的元素,只能使用x[0,0]。

3.3 浅拷贝与深拷贝

numpy数组:
array的索引最终产生的是一个「 原始数据的浅拷贝」,他和原始数据共用一块内存。当我们修改了b的第一个元素的时候,a的第一个元素也被修改了。因为他们都是指向的同一个内存。

这是因为当我们执行b=a[:2]等语句的时候,拷贝的是指向这个元素的指针,当我们想要修改的时候,也是修改了指针指向的元素值。

import numpy as np
a=np.array([0,1,2,3])
b=a[:2]
a[0] = 100
print(a)
print(b)

结果:

[100   1   2   3]
[100   1]

list列表:
list对象在执行的时候拷贝了数据与指针,就不会有这种状况啦。

a=[0,1,2,3]
b=a[:2]
a[0] = 100
print(a)
print(b)

结果:

[100, 1, 2, 3]
[0, 1]

但是,对于列表,如果直接使用b = a,同样是浅拷贝,可以使用b = a[ : ]

轻松搞懂python列表list 和numpy.array数组的区别相关推荐

  1. Python学习,轻松搞懂Python递归函数的原理与应用

    递归: 在函数的定义中,函数内部的语句调用函数本身. 1.递归的原理 学习任何计算机语言过程中,"递归"一直是所有人心中的疼.不知你是否听过这个冷笑话:"一个面包,走着走 ...

  2. 一张图轻松搞懂javascript event对象的clientX,offsetX,screenX,pageX区别

    先总结下区别:event.clientX.event.clientY鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条.IE事件和标准事件都定义了这2个属性event. ...

  3. python中找出numpy array数组的最值及其索引

    在list列表中,max(list)可以得到list的最大值,list.index(max(list))可以得到最大值对应的索引 但在numpy中的array没有index方法,取而代之的是where ...

  4. [译] 12步轻松搞定python装饰器 - 简书

    [译] 12步轻松搞定python装饰器 - 简书 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需要你了解一些函数式编 ...

  5. 一文搞懂 Python 的 import 机制

    一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...

  6. python语言语句快的标记是什么_一文搞懂Python程序语句

    原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...

  7. Python高级特性: 12步轻松搞定Python装饰器

    12步轻松搞定Python装饰器 通过 Python 装饰器实现DRY(不重复代码)原则:  http://python.jobbole.com/84151/ 基本上一开始很难搞定python的装饰器 ...

  8. 怎么用Python写出随时间变化的字_面试必备 | 带你彻底搞懂 Python 生成器

    文章转载地址:面试必备 | 带你彻底搞懂 Python 生成器. 写在之前 Python 的高级语言特性一直是我们学习 Python 的一个难点,大部分人并没有做到熟练的掌握,甚至去学习它都感觉很困难 ...

  9. 五分钟学会python函数_五分钟带你搞懂python 迭代器与生成器

    前言 大家周末好,今天给大家带来的是Python当中生成器和迭代器的使用. 我当初第一次学到迭代器和生成器的时候,并没有太在意,只是觉得这是一种新的获取数据的方法.对于获取数据的方法而言,我们会一种就 ...

最新文章

  1. 如何证明你的性能测试结果可信?
  2. string java getbytes_从 String.getBytes 理解 Java 编码和解码
  3. C语言实战:(2)字符串的倒转变换
  4. 学习笔记2-Linux2
  5. Git笔记(8) 远程仓库的使用
  6. 电脑怎么分盘win10_电脑时间不对怎么办?Win10电脑时间总是不对的解决方法_电脑故障...
  7. 2018.11.05-4028-撸串(string)
  8. Ubuntu系统lamp环境下安装wordpress、zencert和mangento程序网站
  9. 国寿鸿寿年金保险(分红型)
  10. 线性规划问题的模型建立与求解
  11. php emoji base64,PHP处理字符中的emoji表情
  12. 国仁网络资讯:抖音如何利用Dou+推广引流;dou+推广需要注意什么?
  13. 数电电子时钟(555定时器,cd4518)
  14. 基于计算机显卡的研究
  15. MT9255无法使用mm指令编译某个模块的问题
  16. 产品设计体会(0013)产品经理应该是管理者么
  17. 电脑下载速度一快电脑就卡的问题解决
  18. 如何实现轻松会议签到?
  19. 生鲜配送APP软件开发快速制作
  20. ERROR: No matching distribution found for XXXXX 国内的镜像源来加速网络

热门文章

  1. 视频教程-你不能错过的单片机课程-1.1.第1季第1部分-单片机/工控
  2. TCP_CA_Open状态到TCP_CA_CWR状态
  3. linux磁盘相关命令,Linux磁盘管理常用操作命令
  4. 计算机二级程序设计题和答案不同,计算机二级C语言程序设计测试题及答案
  5. iso16949是什么管理体系
  6. 【调剂】西北师范大学计算机科学与工程学院 2023年硕士研究生调剂公告
  7. 重力加速计低通滤波算法——安卓开发文档
  8. 河北大学计算机科学与技术专业硬件实训——C语言控制51单片机实现LED小灯的控制
  9. 年轻人如何创业(如何创业白手起家)
  10. 网页设计期末作业-个人介绍网