一. 通用序列操作:

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

    1.1 索引:

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

>>> greeting ='Hello world'
>>> print greeting
Hello world
>>> print greeting[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'
>>> print web[4:9] #4对于的b
baidu
>>> print web[9:-5] #

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

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

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

  

>>> number =[1,2,3,4,5,6,7,8,8,10]
>>> print number[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 列表的基础 

>>> print list('') #功过【】可以将字符串转换为列表
['', '', '']
>>> 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' object is not iterable

2.2 列表的基本操作
        A 增,删,改

>>> numbers =[1,2,3,4,5]
>>> numbers[0]=5; #修改
>>> print numbers
[5, 2, 3, 4, 5]
>>> numbers.remove(5) #删除value值为5的
>>> print numbers
[2, 3, 4, 5]
>>> del numbers[0] #删除第一个元素
>>> print numbers
[3, 4, 5]
>>> numbers.append(7) #在尾部添加一个元素
>>> print numbers
[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基础教程,完成基础教程学习博客系列.加油!]

.Net程序员之Python基础教程学习----列表和元组 [First Day]的更多相关文章

  1. .Net程序员之Python基础教程学习----字符串的使用 [Second Day]

         在The FirstDay 里面学习了列表的元组的使用,今天开始学习字符串的使用.字符串的使用主要要掌握,字符串的格式化(C语言中我们应该都知道,Python和C语言差别不大),字符串的基本 ...

  2. .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]

       今天主要记录,Python中函数的使用以及异常处理. 一.函数:    1.函数的创建以及调用. def Add(val1,val2): return val1+val2; print Add( ...

  3. .Net程序员之Python基础教程学习----判断条件与循环[Fourth Day]

        今天学习Python的判断条件与循环操作. 一. 布尔变量: 在学习判断条件之前必须的了解bool变量,在Python中bool变量与C语言比较类似,与.net差别比较大,其中下面集中情况需要 ...

  4. .Net程序员之Python基础教程学习----字典的使用 [Third Day]

      今天学习了字典的使用, 所谓的字典其实就是键值对数据, 一个字典里面有唯一的Key对应一个value,Key是唯一的,Value不唯一. 在.net添加相同的Key会报错,在Python,若出现相 ...

  5. python基础教程002_列表与元组

    1.列表 定义: edward = ['Edward Gumdy',42] 描述edward姓名与年龄的列表 edward = [] 空列表 操作: 索引: greeting = 'hello' pr ...

  6. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...

  7. 【学习笔记】Python基础教程学习笔记

    教程视频网盘共享:http://pan.baidu.com/s/1hrTrR5E 03-python基础.if判断 print 输出数据 print("hahahah")----- ...

  8. Python基础:数据类型-列表与元组(6)

    Python中数据结构主要有序列.集合和字典. 1. 通用序列操作 Python内置了多种序列,其中最常用的两种:列表和元组.另一种重要的序列是字符串. 列表和元组的主要不同在于:列表是可以修改的,而 ...

  9. Python基础教程学习(四)类的创建与继承

    类中可以有方法,类外也可以有函数,其实类就是一种封装, Python中可以自己定义一个函数,一可以把这个函数在类中封装成一个方法, 其中的属性和方法自然就从父类中继承来了, 要想获得多个类的属性和功能 ...

随机推荐

  1. LazyCode 自己开源的一个类库

    LazyCode 是什么? LazyCode 一个懒人用的代码类库,包括的模块:网络请求,数据存储,UIKit ,Foundation的一些类目 PHNetWorkClient 功能 1:发送GET ...

  2. ASP.NET登录控件login。

    1.Login控件.通常情况下会出现3个核心元素.用户名文本框.密码输入框.提交凭证的按钮. 1>.比较重要的属性:CreateUserText属性:包含站点注册页的链接文本.CreateUse ...

  3. Vanilla Masker – 功能强大的输入过滤插件

    Vanilla Masker 是一个纯 JavaScript 实现的输入内容过滤和自动转换插件.现在你可以使用一个简单而纯粹的 JavaScript 库来控制你的 input 元素,而不需要加载 jQ ...

  4. 给你推荐10款优秀的 HTML5 动画工具

    HTML5 在过去三年快速增长,已经成为 Web 开发人员最喜欢的编程语言之一.强大的编程语言拥有开发更好的网页应用的能力. HTML5 中引入的新技术都非常好,像 Chrome.Firefox.Sa ...

  5. javascript 不响应可能是引用外部javascript时,引用顺序不对。

    有相互引用关系的js,要最后执行的方法所在的js 先被引用. a.js 中有function1 b.js 中有function2 function1 () { function2(){} } 要 &l ...

  6. ubuntu制作本地源

    背景 平时apt-get install安装软件时,下载的deb文件都会存放在/var/cache/apt/archives/下,为了今后重装或给别人用,特别是没有网络时,这些deb文件实际上是可以派 ...

  7. JavaScript学习11 数组排序实例

    JavaScript学习11 数组排序实例 数组声明 关于数组对象的声明,以前说过:http://www.cnblogs.com/mengdd/p/3680649.html 数组声明的一种方式: va ...

  8. 导致VC不能释放的几个原因

    delegate的属性不是weak NSTimer没有invalidate block中的强引用 调用了performSelector,退出时没有cancelPerformSelectorsWithT ...

  9. Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use.解决办法

    Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The ...

  10. 【读书笔记】iOS网络-同步请求,队列式异步请求,异步请求的区别

    一,同步请求的最佳实践. 1,只在后台过程中使用同步请求,除非确定访问的是本地文件资源,否则请不要在主线程上使用. 2,只有在知道返回的数据不会超出应用的内存时才使用同步请求.记住,整个响应体都会位于 ...