Python列表与C#语言的相似度介绍

开发 后端
Python列表是我们经常使用到的一个代码。其实与我们熟悉的C#语言中的列表没有太多的区别。下面我们来详细的学习相关的知识。

Python列表有不少的知识需要我们学习,下面我们就来看看相关的代码,只有不断的学习才能更好的进行相关的编写。Python列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构。

列表用符号[]表示,中间的元素可以是任何类型(包括列表本身,以实现多维数组),元素之间用逗号分隔。取值或赋值的时候可以像C数组一样,按位置索引:

  1. # -*- coding: utf-8 -*-  
  2. array = [1,2,3]  
  3. print array[0]  
  4. #输出 1  
  5. array[0] = 'a'  
  6. print array  
  7. #输出 ['a', 2, 3] 

从上边的代码中你可能发现一个有趣的事情:在Python的列表中可以混合使用不同类型的数据,像['a', 2, 3]这样,不过我不建议你这样做,我觉得没什么好处(虽然个别场合下可能会比较方便)。#t#

另外还可以看到,列表是可变的序列,也就是说我们可以在“原地”改变列表上某个位置所存储的对象(的值)。

C#中ArrayList支持的多数操作(如追加、插入、删除、清空、排序、反转、计数等),Python中的list也都支持,同时list也支持“切片”这种操作。切片指的是抽取序列的一部分,其形式为:list[start:end:step]。其抽取规则是:从 start开始,每次加上step,直到end为止。默认的step为1;当start 没有给出时,默认从list 的第一个元素开始;当end=-1 时表示list 的最后一个元素,依此类推。一些简单的例子见下边代码:

 

  1. # -*- coding: utf-8 -*-  
  2. test = ['never', 1, 2, 'yes', 1, 'no', 'maybe']  
  3. print test[0:3] # 包括test[0],不包括test[3]  
  4. print test[0:6:2] # 包括test[0],不包括test[6],而且步长为2  
  5. print test[:-1] # 包括开始,不包括最后一个  
  6. print test[-3:] # 抽取最后3 个  

字符串、列表、元组都支持切片操作,这个很方便,应该学会熟练使用它。

最后,list是Python列表中最基础的数据结构,你可以把它当作链表、堆栈或队列来使用,效率还不错。Python中没有固定长度数组,如果你确实很在意性能,可以导入array模块来创建一个C风格的数组,它的效率很高,这里就不详细介绍了。

Python列表元组(tuple)

元组与列表非常相似,它是用()而不是[]括起来的序列。元组比列表的速度更快,但元组是一个不可变的序列,也就是与str一样,无法在原位改变它的值。除此之外,其他属性与列表基本一致。

元组定义的方法与列表类似,不过在定义只包含一个元素的元组时,注意在后边加一个逗号。请体会以下几句语句的差异:

 

  1. # -*- coding: utf-8 -*-   
  2. test = [0] #列表可以这样定义   
  3. print type(test) #输出<type 'list'>   
  4. test = [0,] #也可以这样定义   
  5. print type(test) #输出<type 'list'>   
  6. test = (0,) #元组可以这样定义   
  7. print type(test) #输出<type 'tuple'>   
  8. test = (0) #但不能这样定义,Python会认为它是一个括号表达式 print type(test) #输出<type 'int'> 
  9. test = 0, #也可以省略括号,但要注意与C的逗号表达式不同  
  10. print type(test) #输出<type 'tuple'> 

利用元组的这个特性,可以简化Python变量的初始化过程,如:

  1. x,y,z=1,2,3 

还可以很简单地进行数据交换。比如:

  1. a = 1 
  2. b = 2 
  3. a,bb = b,a 

以上这类语句在Python列表中被广泛应用于变量交换、函数传值等应用,因此Python的解释器在不断对其进行优化,现在已经具备了相当高的效率。所以以上代码在Python 2.5以后的版本中,比tmp = a; a = b; b = tmp这种常规语句更快。

 

责任编辑:张浩 来源: TT网络
相关推荐

2010-01-15 18:35:25

C++的类

2009-08-03 16:28:53

Java语言与C#语言

2009-06-15 11:03:10

Java语言C#语言

2009-09-10 16:41:13

C# get post

2009-08-31 17:13:09

2011-07-13 13:23:04

Java 7C#

2009-09-02 17:10:45

C#语言入门

2009-08-12 18:35:36

C# ArrayLis

2009-09-07 15:40:06

2009-08-26 11:30:16

C# Arraylis

2010-03-09 10:59:42

Python语言教程

2009-08-13 17:04:09

C#语言C#程序

2024-04-30 07:27:00

消除图片深度学习C#

2009-08-17 16:47:51

C# Anonymou

2009-08-25 10:24:29

C# delegate

2009-09-02 17:20:50

C# Parsing

2009-08-10 16:30:56

C# BitmapDa

2009-08-03 14:09:15

C#调用API

2009-08-03 14:54:23

值类型C#

2009-07-31 14:15:38

C# 构造函数
点赞
收藏

51CTO技术栈公众号