[转载] python数组的使用

参考链接: Python中整数的最大可能值是多少?

原文地址为:

python数组的使用

 

 

 

  

   

   python数组的使用    

   

  

 

 

    

 

 

 

   python数组的使用 

  

 

   2010-07-28 17:17 

  

 

   1、Python的数组分三种类型: 

   (1) list 普通的链表,初始化后可以通过特定方法动态增加元素。 

   定义方式:arr = [元素] 

  

   (2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。 

   定义方式:arr = (元素) 

  

   (2) Dictionary 词典类型, 即是Hash数组。 

   定义方式:arr = {元素k:v} 

  

   2、下面具体说明这些数组的使用方法和技巧: 

  

  

  (1) list 链表数组 

  

  a、定义时初始化 

   a = [1,2,[1,2,3]] 

  

  

  b、定义时不初始化 

   一维数组: 

   arr = [] 

  

   多维数组: 

   arr = [i for i in range(10), 1,[]] #注意, i for in xx 这个必须放在第一个位置,否则要先定义i, 

  

   如: 

  

  arr = [i for i in range(5), j for j in range(5), []] 

   这是错误的 

  

  i = 0 j = 0 arr = [i for i in range(5), j for j in range(5), []] 

   这是正确的 

  

  

  c、del 语句 和 : 的用法 

   可以用 start : end 表示数组里的一个区间 ( i >= start and i < end) 

   del 删除数组里的指定元素 

   如: del arr[0] 

           del arr[0, 2] 

          newarr = arr[0, 2] 

  

  

  d、遍历数组: 

   for k, v in enumerate(arr): 

           print k, v 

  

  

  e、增加元素: 

   一维 

   arr.append('aaa') 

   二维 

   arr[0].append('aaa') 

   如果要在任意位置插入用 arr.insert(n, 值) 

   此外还有一种特殊的用法是: 

   arr += [数组元素] 

   在不指定下标的情况下,是允许用 += 增加数组元素的。 

  

  

  (2) Tuple 固定数组 

   Tuple 是不可变 list,一旦创建了一个 tuple 就不能以任何方式改变它。 

   下面拿具体示例说明: 

   >>> t = ("a", "b", "c", "d", "e")              #[1] 用小括号包围来定义 

   >>> t 

   ('a', 'b', 'c', 'd', 'e') 

   >>> t[0]                                       #[2] 直接列出某下标的元素 

   'a' 

   >>> t[-1]                                      #[3] 负数表示,从后面倒数的索引 -1 为倒数第一个, 0是顺数第一个 

   'example' 

   >>> t[1:3]                                     #[4] 这里 1:3 是 i>=1 and i<3 的区间 

   ('b', 'mpilgrim') 

  

   Tuple 没有的方法: 

   [1] 不能向 tuple 增加元素,没有 append 、 extend 、insert 等方法。 

   [2] 不能从 tuple 删除元素,没有 remove 或 pop 方法。 

   [3] 不能在 tuple 中查找元素,没有 index 方法(index是查找而不是索引,索引直接用下标即可,如:t[0])。 

  

   使用 tuple 的好处: 

   * Tuple 比 list 操作速度快。如果您定义了一个值的常量集, 并且唯一要用它做的是不断地遍历它, 请使用 tuple 代替 list。 

   * 如果对不需要修改的数据进行 “写保护”, 可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句, 说明这一数据是常量。如果必须要改变这些值, 则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。 

   * 还记得我说过 dictionary keys 可以是字符串, 整数和 “其它几种类型”吗? Tuples 就是这些类型之一。 Tuples 可以在 dictionary 中被用做 key, 但是 list 不行。实际上, 事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的, 但是如果您有一个 list 的 tuple, 那就认为是可变的了, 用做 dictionary key 就是不安全的。只有字符串, 整数或其它对 dictionary 安全的 tuple 才可以用作 dictionary key。 

  

   Tuple 可以转换成 list, 反之亦然。 

   转换方式为: 

   t = list( t ) 

   反之: 

   arr = tuple( arr ) 

  

  

  (2) Dictionary (哈希数组)词典数组 

  

   #Dictionary 的用法比较简单,它可以存储任意值,并允许是不同类型的值,下面实例来说明: 

   #下面例子中 a 是整数, b 是字符串, c 是数组,这个例子充分说明哈希数组的适用性。 

   dict_arr = {'a': 100, 'b':'boy', 'c':['o', 'p', 'q']} 

  

   #可以直接增加一个元素,如果同名,则会改变原来的key的元素的值 

   dict_arr['d'] = 'dog' 

  

   #输出所有的key 

   print dict_arr.keys() 

  

   #输出所有的value 

   print dict_arr.values() 

  

   #遍历数组 

   import types 

   for k in dict_arr: 

       v = dict_arr.get(k) 

       if type(v) is types.ListType: #如果数据是list类型,继续遍历 

           print k, '---' 

           for kk, vv in enumerate(v): 

               print kk, vv 

           print '---' 

       else: 

           print dict_arr.get(k) 

  list的方法 

  L.append(var) #追加元素 

  L.insert(index,var) 

  L.pop(var) #返回最后一个元素,并从list中删除之 

  L.remove(var) #删除第一次出现的该元素 

  L.count(var) #该元素在列表中出现的个数 

  L.index(var) #该元素的位置,无则抛异常 

  L.extend(list) #追加list,即合并list到L上 

  L.sort() #排序 

  L.reverse() #倒序 

  list 操作符:,+,*,关键字del 

  a[1:] #片段操作符,用于子list的提取 

  [1,2]+[3,4] #为[1,2,3,4]。同extend() 

  [2]*4 #为[2,2,2,2] 

  del L[1] #删除指定下标的元素 

  del L[1:3] #删除指定下标范围的元素 

  list的复制 

  L1 = L #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作。函数参数就是这样传递的 

  L1 = L[:] #L1为L的克隆,即另一个拷贝。 

  

  list comprehension 

  [ <expr1> for k in L if <expr2> ] 

  

  2、dictionary: 字典(即C++标准库的map) 

  dict = {‘ob1′:’computer’, ‘ob2′:’mouse’, ‘ob3′:’printer’} 

  每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。 

  键是唯一的,字典只认最后一个赋的键值。 

  

  dictionary的方法 

  D.get(key, 0) #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常 

  D.has_key(key) #有该键返回TRUE,否则FALSE 

  D.keys() #返回字典键的列表 

  D.values() 

  D.items() 

  

  D.update(dict2) #增加合并字典 

  D.popitem() #得到一个pair,并从字典中删除它。已空则抛异常 

  D.clear() #清空字典,同del dict 

  D.copy() #拷贝字典 

  D.cmp(dict1,dict2) #比较字典,(优先级为元素个数、键大小、键值大小) 

  #第一个大返回1,小返回-1,一样返回0 

  

  dictionary的复制 

  dict1 = dict #别名 

  dict2=dict.copy() #克隆,即另一个拷贝。 

  

  3、tuple:元组(即常量数组) 

  tuple = (‘a’, ‘b’, ‘c’, ‘d’, ‘e’) 

  可以用list的 [],:操作符提取元素。就是不能直接修改元素。 

  

  4、string: 字符串(即不能修改的字符list) 

  str = “Hello My friend” 

  字符串是一个整 体。如果你想直接修改字符串的某一部分,是不可能的。但我们能够读出字符串的某一部分。 

  子字符串的提取 

  str[:6] 

  字符串包含 判断操作符:in,not in 

  “He” in str 

  “she” not in str 

  

  string模块,还提供了很多方法,如 

  S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1 

  S.rfind(substring,[start [,end]]) #反向查找 

  S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常 

  S.rindex(substring,[start [,end]])#同上反向查找 

  S.count(substring,[start [,end]]) #返回找到子串的个数 

  

  S.lowercase() 

  S.capitalize() #首字母大写 

  S.lower() #转小写 

  S.upper() #转大写 

  S.swapcase() #大小写互换 

  

  S.split(str, ‘ ‘) #将string转list,以空格切分 

  S.join(list, ‘ ‘) #将list转string,以空格连接 

  

  处理字符串的内置函数 

  len(str) #串长度 

  cmp(“my friend”, str) #字符串比较。第一个大,返回1 

  max(‘abcxyz’) #寻找字符串中最大的字符 

  min(‘abcxyz’) #寻找字符串中最小的字符 

  

  string的转换 

  

  oat(str) #变成浮点数,float(“1e-1″) 结果为0.1 

  int(str) #变成整型, int(“12″) 结果为12 

  int(str,base) #变成base进制整型数,int(“11″,2) 结果为2 

  long(str) #变成长整型, 

  long(str,base) #变成base进制长整型, 

  

  字符串的格式化(注意其转义字符,大多如C语言的,略) 

  str_format % (参数列表)  

  

 

     

  

 

     

  

  

  6. 列表切片操作 

  

    1. a = [1,2,3,4,5]  

  

    2. >>> a[::2] # iterate over the whole list in 2-increments  

  

    3. [1,3,5]  

  

    4.  

  

    5. # 列表逆序  

  

    6. >>> a[::-1]  

  

    7. [5,4,3,2,1] 

  

 

     

  

 

     

  

  

  8. 利用字典格式化字符串view plaincopy to clipboardprint?  1. >>> print "The %(foo)s is %(bar)i." % {'foo': 'answer', 'bar':42}   2. The answer is 42.   3.   4. >>> foo, bar = 'question', 123   5.   6. >>> print "The %(foo)s is %(bar)i." % locals()   7. The question is 123. 9. 保留精确数因为round()返回指类型为浮点数,所以需要加上str()view plaincopy to clipboardprint?  1. >>> str(round(1234.5678, -2))   2. '1200.0'   3. >>> str(round(1234.5678, 2))   4. '1234.57' 10. and/or 条件选择view plaincopy to clipboardprint?  1. x = is_ok() and "Yes" or "No"   2.   3. # 等价于   4. if is_ok():   5. x = "Yes"   6. else:   7. x = "No"   8. 11. 列表赋值y = x 相当于 指针传递;y = x[:]相当于 值传递。view plaincopy to clipboardprint?  1. >>> x = [1,2,3]   2. >>> y = x   3. >>> y[2] = 7   4. >>> y   5. [1, 2, 7]   6. >>> x   7. [1, 2, 7]   8. >>> y = x[:]   9. >>> y[2] = 8   10. >>> y   11. [1, 2, 8]   12. >>> x   13. [1, 2, 7]  

  

 

     

  

 

     

  

 

转载请注明本文地址:

python数组的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

scala中循环守卫_Scala中的循环

scala中循环守卫Scala中的循环 (Loops in Scala) In programming, many times a condition comes when we need to execute the same statement or block of code more than one time. It could be difficult to write the same code multiple times, so programing language d…

50个必备基础命令

1.tar创建一个新的tar文件$ tar cvf archive_name.tar dirname/解压tar文件$ tar xvf archive_name.tar查看tar文件$ tar tvf archive_name.tar2. grep在文件中查找字符串(不区分大小写)$ grep -i "the" demo_file输出成功匹配的行&#xff0c;以及该行之后的三行$ g…

NM的完整形式是什么?

NM&#xff1a;无消息 (NM: No Message) NM is an abbreviation of "No Message". NM是“无消息”的缩写。 It is an expression, which is commonly used in the Gmail platform. It is also written as N/M or n/m or *n/m*. It is written in the subject of the…

[转载] python中全局变量和局部变量解析

参考链接&#xff1a; Python中的全局变量和局部变量 python函数中可以访问全局变量但是不能给全局变量赋值&#xff0c;除非进行显式声明global a 比如定义了全局变量 a 在函数my_fun()中可以直接访问a的值&#xff0c;而不需要global全局变量申明。下图为上面代码运行输出 …

【iCore4 双核心板_FPGA】例程十六:基于双口RAM的ARM+FPGA数据存取实验

实验现象&#xff1a; 核心代码&#xff1a; int main(void) {/* USER CODE BEGIN 1 */int i;int address,data;char error_flag 0;char receive_data[50];char buffer[8];char *p;/* USER CODE END 1 *//* MCU Configuration-----------------------------------------------…

[转载] Python中TFTP的理解

参考链接&#xff1a; Python中的打包pack和拆包unpack参数 Num01–>TFTP协议介绍 TFTP&#xff08;Trivial File Transfer Protocol,简单文件传输协议&#xff09; 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议 特点&#xff1a; 1,简单 2…

gn fast-gn_GN的完整形式是什么?

gn fast-gnGN&#xff1a;晚安 (GN: Good Night) GN is an abbreviation of "Good Night". GN是“ Good Night”的缩写 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites like Facebook, Yahoo Messenge…

从零开始编写自己的C#框架(27)——什么是开发框架

前言 做为一个程序员&#xff0c;在开发的过程中会发现&#xff0c;有框架同无框架&#xff0c;做起事来是完全不同的概念&#xff0c;关系到开发的效率、程序的健壮、性能、团队协作、后续功能维护、扩展......等方方面面的事情。很多朋友在学习搭建自己的框架&#xff0c;很多…

[转载] Python 递归 深入理解递归 Python递归剖析,绝对让你看懂!

参考链接&#xff1a; Python | print()中的结束参数 目录 递归剖析 递归的两个过程 return 返回值 详解 递归思路二分法和递归尾递归递归练习题 递归剖析 递归真的很重要&#xff0c;之前学的时候&#xff0c;学的一知半解&#xff0c;以为真正了解&#xff0c;每次想到递归…

laravel 项目迁移_在Laravel迁移

laravel 项目迁移Before moving forward we need to know some facts about it, 在继续前进之前&#xff0c;我们需要了解一些事实&#xff0c; Resources: In these directories, we have already a js, lang, sass and view page. Where, sass and js file holf their uncom…

Python之list对应元素求和

本次分享将讲述如何在Python中对多个list的对应元素求和&#xff0c;前提是每个list的长度一样。比如&#xff1a;a[1,2,3], b[2,3,4], c[3,4,5], 对a,b,c的对应元素求和&#xff0c;输出应为[6,9,12].    方法一&#xff1a;   直接求解&#xff0c;按照对应元素相加的…

[转载] Python中str跟int的转换

参考链接&#xff1a; Python中的类型转换 字符串str转换成int: int_value int(str_value) int转换成字符串str: str_value str(int_value) a100 b666 #int转str类型 print(int转str类型) print(int转str&#xff1a; str(a)) #str转int类型 print(str转int类型…

ot协议是什么_OT的完整形式是什么?

ot协议是什么OT&#xff1a;主题外 (OT: Off Topic) OT is an abbreviation of "Off Topic". OT是“ Off Topic”的缩写 。 It is an expression, which is commonly used in Gmail or messaging platform. It shows that the email that has been sent is irrelev…

[转载] python中字符串编码形式及其所占字节

参考链接&#xff1a; Python中的字节对象与字符串 1.常见字符串编码错误 在使用Python读文件时经常遇到编码问题引起的错误&#xff0c;比如&#xff1a; UnicodeDecodeError: gbk codec cant decode byte 0x80 in position 30: illegal multibyte sequence 遇到这种异…

[AtCoder-ARC073F]Many Moves

题目大意&#xff1a;   有一排n个格子和2枚硬币。   现在有q次任务&#xff0c;每一次要你把其中一枚硬币移到x的位置上&#xff0c;移动1格的代价是1。   两枚硬币不能同时移动&#xff0c;任务必须按次序完成。   现在告诉你两枚硬币初始状态所在的位置a和b&#xf…

ScalavsKotlin

Is Scala better that Kotlin? No..., Is Kotlin better than Scala? No... Scala比Kotlin更好吗&#xff1f; 不...&#xff0c;Kotlin胜过Scala吗&#xff1f; 没有... Both programming languages have their own profits and are for a specific set of development. It…

工业智能相机与基于PC的机器视觉的区别比较

随着科技的日渐成熟&#xff0c;机器视觉得到了飞速发展。由于嵌入式技术的发展,近几年智能相机性能显著提高&#xff0c;越来越多必须依赖于PC处理的应用开始向智能相机平台倾斜。低成本、高可靠性及易于安装维护等优势&#xff0c;使得机器视觉在制造业上的规模性应用越来越普…

[转载] python skimage在图像处理中的用法

参考链接&#xff1a; 在Python中打印单变量和多变量 基于python脚本语言开发的数字图片处理包&#xff0c;比如PIL,Pillow, opencv, scikit-image等。 PIL和Pillow只提供最基础的数字图像处理&#xff0c;功能有限&#xff1b;opencv实际上是一个c库&#xff0c;只是提供了py…

scala元组 数组_Scala中的数组

scala元组 数组Scala中的数组 (Arrays in Scala) An array is a linear data structure with a fixed number of elements. It is a collection that stores a fixed number Arrays in Scalf elements of the same datatype. In Scala, an array is 0 indexed, i.e. the first …

OpenStack —— DevStack一键自动化安装

一、DevStack介绍Devstack目前是支持Ubuntu16.04和CentOS 7&#xff0c;而且Devstack官方建议使用Ubuntu16.04&#xff0c;所以我们使用Ubuntu 16.04进行安装。默认无论是Devstack和OpenStack&#xff0c;都是采用Master的代码进行安装&#xff0c;这样经常会出现&#xff0c;今…