![算法零基础一本通(Python版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/51/44510051/b_44510051.jpg)
2-6 与数组有关的Python程序
前几节是数组的相关知识,对于想进一步学习信息科学的人很有帮助。其实Python语言对于常用的数组数据处理已经有内建的方法,如建立、插入、删除数据,本节将做说明。
在Python程序语言的数据结构中,列表(list)与我们所提的数组非常类似,不过列表结构允许数组元素含不同数据形态,所以在使用上更具弹性,不过也会造成执行速度较差以及需要较多的系统资源。如果数据量少,其实也可以将列表当作数组使用。
Python内建有array模块,使用这个模块可以建立整数、浮点数的数组,在应用上可以用一个字符的type code指定数组的数据形态。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-T33_46763.jpg?sign=1739291154-hwqdZwLMErf53Bdjn6XmRwVvKIGhTUKJ-0-7d97c2cb41eb4d645d1c172bd320476e)
在使用array模块前,必须先导入此模块:
from array import *
2-6-1 建立数组
可以使用array( )方法。
array(typecode[, initializer])
typecode是指所建立数组的数据形态,第2个参数是所建的数组内容。
程序实例ch2_1.py:建立数组然后打印。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P34_46764.jpg?sign=1739291154-9OX8kyRxXSz8k9t5c5Ni1ogXOajoJ0rG-0-224a6191c49e50168b4903c72972682d)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P34_46765.jpg?sign=1739291154-3L04YYHxFjARh4BcaWFHaeePvq8ykA4Z-0-f86b02d384226477328cefd8ad44bdf0)
2-6-2 存取数组内容
我们可以直接使用索引值存取数组内容。
程序实例ch2_2.py:建立数组然后存取数组内容。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P34_46766.jpg?sign=1739291154-MvefqbSb5RIyeeBvO70MoIuqLu0kCY6y-0-3371928b07263ee06930a9a7d484e131)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P34_46767.jpg?sign=1739291154-ElQ8C5vHFxTYCp5zZHg7uBVdjdFsuU5F-0-4a7193863c1e757ed4bf28b5c13a6196)
2-6-3 将数据插入数组
可以使用insert( )方法,将数据插入数组。
insert(i, x)
在索引i位置插入数据x。
程序实例ch2_3.py:先建立数组,然后在索引2位置插入100。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P35_46768.jpg?sign=1739291154-fg4IGCKW1fIYgy0419ZEYUEQCOXKi5lj-0-d1910a43ee632d1aba57cd6de16a1415)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P35_46769.jpg?sign=1739291154-FwCvtV4fXZ0VnS9kXSO3S451xS194Avd-0-9dcdacd897184023802964b27af5fac4)
append( )则是可以将数据插入数组末端。
程序实例ch2_4.py:先建立数组,然后在数组末端插入100。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P35_46770.jpg?sign=1739291154-xUzWvku5jDjNeOR4NHCVpnXk3WYvRzQb-0-818f3d12932b2ef9d0a4985211044b7e)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P35_46771.jpg?sign=1739291154-4TIRhULrUhtNsw1lPeeCDba2pUU8srco-0-fe6bec065b218914f8a2adc5da997ae6)
2-6-4 删除数组元素
可以使用remove(x)方法删除数组中第一个出现的元素x。
程序实例ch2_5.py:先建立数组,然后删除数组元素25。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P36_46772.jpg?sign=1739291154-VEKBg4yH2NY3OKLBBXA5sIkEZh6bMNyQ-0-9a048c0b1790314e06528a3448f3c4f7)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P36_46773.jpg?sign=1739291154-JbQErctG0M4nLLuYCheVDIx71WhDPoty-0-95941ab314c07ead3789bd90a43723bd)
pop(i)可以回传和删除索引i的元素,若省略i相当于i=-1,此时可以回传和删除最后一个元素。
程序实例ch2_6.py:先建立数组,然后第1次使用pop( ),第2次使用pop(2),回传和删除数组元素。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P36_65774.jpg?sign=1739291154-vnE74UognTMkBQs5hrF2JMS5cCiGfBmQ-0-a86348c1f15156b6a9743be8a85150b6)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P36_46775.jpg?sign=1739291154-2NxIWRM5aR2zfaSntxIWwufqVhDGabzX-0-1161edac8dad1ad9cdb8b2e2beebd1ea)
2-6-5 搜寻数组元素
可以使用index(x)方法搜寻指定数组元素x的索引。
程序实例ch2_7.py:先建立数组,然后找出数组元素35的索引值。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P37_51154.jpg?sign=1739291154-lBMoCXSIJeG8NJsrtvv2DCFLiQCttHsR-0-bb9fecfe902dfd71c3599e714629d88f)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P37_46777.jpg?sign=1739291154-ZoVfWFXD7UNzSUw7jLkaMGOeVHVWetFS-0-45f92474e8437c5ebfda2791007b6e6b)
2-6-6 更新数组内容
这一节主要是更改数组某索引内容。
程序实例ch2_8.py:更改索引2的内容为100。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P37_51153.jpg?sign=1739291154-8kglDNwfKi9tvEBzJMh8jUGqvYjiObW7-0-0aef14dafd3952fa8c913a1de84c5621)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P37_46779.jpg?sign=1739291154-1G0N1YobD4xUWhmvoMAvBqY8zsirNhR2-0-8f701e7194dd7fcb5ba1347adfd5a1b7)
2-6-7 Numpy
Python是一个应用范围很广的程序语言,为了应对高速运算,在人工智能领域常用Numpy模块执行相关的数组(array)运算,有关这方面的应用读者可以参考笔者所著的《Python数据科学零基础一本通》。