.Net程序员之Python基础教程学习----列表和元组[FirstDay]

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一. 通用序列操作:

其实对于列表,元组 都属于序列化数据,可以通过下表来访问的。下面就来看看序列的基本操作吧.

1.1 索引:

序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所以的范围是-N~N-1之间,超过这个范围就会提示IndexError: index out of range

>>> greeting ='Hello world'>>>PRintgreeting

Hello world>>>printgreeting[0],greeting[-1]

H d

1.2 分片:

A.简单的分片:

分片是基于索引基础上的,可以理解为取一定区域的数据,和C#中的substring差不多,以及C#Linq提供的skip()和take()方法.

Note:[A:B] A,B分别对应索引的下标,取值区域是[A,B)(学过数学的都知道不包含B). 注意意见是B必须大于A,否则输出为空,那么问题里了为何web[9:-1]有数据,请仔细想一想,其实-1的下标数据等价于m的下标12,12>9所以有数据. 那么对于web[9:-5] 就悲剧了.

>>> web ='www.baidu.com'>>>printweb[4:9] #4对于的b

baidu>>>printweb[9:-5] #

>>>printweb[9:-1] #9对应的第二个'.' -1对应的m

.co

B.等差数列形式的分片:

默认情况下是按照下标间隔为1的时候,进行获取的,其实可以通过第三个参数来进一步分割.[A:B:间隔数], 10个数字没两个取1次.

>>> number =[1,2,3,4,5,6,7,8,8,10]>>>printnumber[0:10:2]

[1, 3, 5, 7, 8]

>>> print number[::-2]

[10, 8, 6, 4, 2]

>>> print number[::2]

[1, 3, 5, 7, 8]

1.3 序列相加:

同类型的可以想加,不同类型的会报错Type Error

>>> [1,2,3] + [4,5]

[1, 2, 3, 4, 5]>>> [1,2,3] +['hello']

[1, 2, 3,'hello']>>> [1,2,3]+'hello'Traceback (most recent call last):

File"<pyshell#41>", line 1,in<module>[1,2,3]+'hello'TypeError: can only concatenate list (not"str") to list>>>

1.4 乘法:

觉得Python的乘法很有意思,可以理解为对现有的数据的一种多个Copy.

>>> [1]*10[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]>>>'New'*10'New New New New New New New New New New'

1.5 有用方法.

通过in可以Check元素是否存在,max,min,len,count分别获取最大值,最小值,长度,包含数量

>>> number =[1,2,2,3,3,4,5,7]>>>print'Max Number:'+str(max(number))

Max Number:7

>>>print'2的数量是:'+ str(number.count(2))

2的数量是:2

>>>print'number列表的长度是:'+str(len(number))

number列表的长度是:8

二. 列表.

列表可以理解为C语言中的链表.或者C#中的List<Object>,列表可以实现上面出现的通用序列号操作,可以对列表进行增,删,改,查,排序等方法

2.1 列表的基础

>>>printlist('123')#功过【】可以将字符串转换为列表['1','2','3']>>> list1=[1,2,3]#通过[]声明列表>>> list2 = list(123)#123是整形,不存在索引,所以转换的时候报错了。Traceback (most recent call last):

File"<pyshell#53>", line 1,in<module>list2= list(123)

TypeError:'int'objectisnotiterable

2.2 列表的基本操作

A 增,删,改

>>> numbers =[1,2,3,4,5]>>> numbers[0]=5;#修改>>>printnumbers

[5, 2, 3, 4, 5]>>> numbers.remove(5)#删除value值为5的>>>printnumbers

[2, 3, 4, 5]>>>delnumbers[0]#删除第一个元素>>>printnumbers

[3, 4, 5]>>> numbers.append(7)#在尾部添加一个元素>>>printnumbers

[3, 4, 5, 7]

B 分片赋值【神奇的分片操作】

整体替换

>>> Greeting= [1,2,3,4,5]

>>> Greeting[1:] = [0,0]

>>> Greeting

[1, 0, 0]

替换区间

>>> Greeting= [1,2,3,4,5]>>> Greeting[1:2]=[0,0,0]>>>Greeting

[1, 0, 0, 0, 3, 4, 5]

批量添加,用[0,0,0]替换[]

>>> Greeting=[1,2,3,4,5]>>> Greeting[1:1]=[0,0,0]>>>Greeting

[1, 0, 0, 0, 2, 3, 4, 5]

批量删除,用[]替换[2,3,4]

>>> Greeting=[1,2,3,4,5]>>> Greeting[1:4]=[]>>>Greeting

[1, 5]

Note:对于种种操作其实都可以理解为一个替换。

2.3 列表的方法.

>>> Number =[1,2,3,4,5]>>> Number.extend([6,7,8])#添加一个列表,必须是列表>>>Number

[1, 2, 3, 4, 5, 6, 7, 8]>>> Names =['Frank','Lock','Vincent','Tingna']>>> Names.index('Lock')#通过Index取下标1

>>> Names.insert(2,'Hardy')>>>Names

['Frank','Lock','Hardy','Vincent','Tingna']>>> Names.pop()#最有一个元素删除'Tingna'>>>Names

['Frank','Lock','Hardy','Vincent']>>> Names.pop(0)#踢出第一个元素'Frank'>>>Names

['Lock','Hardy','Vincent']>>> Names.reverse()#反序>>>Names

['Vincent','Hardy','Lock']>>> Names.sort()#从小到达>>>Names

['Hardy','Lock','Vincent']>>> Names.sort(key=len)#通过长度排序>>>Names

['Lock','Hardy','Vincent']>>> Names.sort(reverse=True)#从大到小>>>Names

['Vincent','Lock','Hardy']

三. 元组不可变序列

通过()号声明,与list的区别在于一旦声明后不可变.

>>> tuple1 = (1,2,3)>>>tuple1

(1, 2, 3)>>> tuple(list('hello'))

('h','e','l','l','o')>>>

四. 总结

本章总结了Python基础教程里面的列表和元组,其实整体来说和.net区别不算太大.比如奇妙的切片操作其实就是简化了.net里面的addrang,revomeall这些方法. 确实正如书里面所说Python可以用100行代码做到C语言1000行代码所需要完成的事情.

好了洗洗睡睡了.求明天公司年会能抽中Iphone土豪金大奖,哈哈哈.

[利用一个月的下班之余看完Python基础教程,完成基础教程学习博客系列.加油!]

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航