Python基础篇(二)
Python最基本的数据结构是序列(sequence),序列中的每个元素被分以以0开头的唯一的一个id号。
Python中有6种内建的序列:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象。
下面是一个使用列表的例子:
>>> edward = ['Edward Gumby',42]
>>> john = ['John Smith',50]
>>> director = [edward,john]
>>> director
[['Edward Gumby', 42], ['John Smith', 50]]
列表中的元素是可以变化的,例如可以在director中新添加一个对象。元组中的元素是不能变化的,当内部的元素不能被修改时,应该考虑使用元组。
所有的序列类型都有以下的公共的操作:索引,分片,加,乘,检查是否存在某个元素,计算长度,找出最大最小元素,迭代。
索引
>>> greetings = "greetings"
>>> greetings[-1]
's'
>>> greetings[0]
'g'
从左边开始使用索引是由0开始,从右边开始使用索引是由-1开始.
分片
>>> numbers =[1,2,3,4,5,6,7,8,9]
>>> numbers[3:6]
[4, 5, 6]
和Java的subString一样,第一个数字(3)是包含在内的,第二个数字(6)是不包含的。
分片范围的第一个参数和第二个参数都是可以省略的,省略就表示开始或者结尾。
>>> numbers[-3:]
[7, 8, 9]
>>> numbers[:3]
[1, 2, 3]
实际上第一个参数和第二个参数都是可以省略的,如下:
>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
也可以加上第三个参数,表示步长,隔几个数字生效。
>>> numbers[3:10:2]
[4, 6, 8]
步长也可以是负数,这时分片的方向是向前的。
>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
加
>>> [1,2,3]+[7,8,9]
[1, 2, 3, 7, 8, 9]
不同的类型是不能相加的,否则会出错:
>>> [1,2,3] +"hello"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
乘
>>> "python"*5
'pythonpythonpythonpythonpython'
>>> [12]*3
[12, 12, 12]
None表示列表什么都没有,但是却可以起到占位的作用,列表中的元素可以在后来在进行赋值。
>>> [None]*3
[None, None, None]
成员资格
>>> permissions ="rw"
>>> "r" in permissions
True
>>> user =['jack','mike','adas']
>>> 'jack' in user
True
>>> database =[
... ['jack',34],
... ['mike',27],
... ['adas',30]
... ]
>>> ['mike',27] in database
True
长度,最大值,最小值
>>> numbers = [7,9,33]
>>> len(numbers)
3
>>> max(numbers)
33
>>> min(4,7,22,3)
3
不同于元组和字符串,列表中的元素是可变的。使用list函数可将其他序列类型转换为列表。
>>> list("hello")
['h', 'e', 'l', 'l', 'o']
列表有一些其他序列类型不一定有的功能,例如:
元素赋值
>>> x=[1,1,1]
>>> x[1]=2
>>> x
[1, 2, 1]
删除元素
>>> x=[1,2,3]
>>> del x[2]
>>> x
[1, 2]
分片赋值
>>> name = list("Perl")
>>> name
['P', 'e', 'r', 'l']
>>> name[2:] = ['a','r']
>>> name
['P', 'e', 'a', 'r']
分片赋值可以在不改变原有元素的情况下插入新的元素:
>>> numbers =[1,5]
>>> numbers[1:1]=[2,3,4]
>>> numbers
[1, 2, 3, 4, 5]
与上面同样的道理,分片赋值也可以进行元素的删除操作:
>>> numbers
[1, 2, 3, 4, 5]
>>> numbers[1:4]=[]
>>> numbers
[1, 5]
append方法
append方法用于在列表的末尾增加新的元素,新增加的元素可以是新的类型:
>>> mumbers = ["Jane","Mary","Tina"]
>>> mumbers.append(1);
>>> mumbers
['Jane', 'Mary', 'Tina', 1]
extend方法
extend方法可以将2个列表合称为1个列表:
>>> a =[1,2,3]
>>> b=[5,6,7]
>>> a.extend(b)
>>> a
[1, 2, 3, 5, 6, 7]
使用 a = a+b可以达到同样的效果。
count方法
count方法用于统计某个元素在列表中出现的次数:
[1, 2, 3, 5, 6, 7]
>>> ['to','be','or','not','to','be'].count('to')
2
index方法
index方法用于找出匹配的元素在列表中的位置:
>>> ['to','be','or','not','to','be'].index("be")
1
>>> ['to','be','or','not','to','be'].index("be",2)
5
>>> ['to','be','or','not','to','be'].index("be",2,4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'be' is not in list
insert方法
insert方法用于将元素插入在指定的位置,用上述的分片功能也能完成:
>>> numbers =[1,2,3,5,6,7]
>>> numbers.insert(3,"four")
>>> numbers
[1, 2, 3, 'four', 5, 6, 7]
pop方法
pop方法返回列表中的元素并将其删除,默认返回的是最后一位的元素,也可以返回指定位置的元素
>>> numbers = [1,2,3]
>>> numbers.pop()
3
>>> numbers
[1, 2]
>>> numbers = [1,2,3]
>>> numbers.pop(0)
1
>>> numbers
[2, 3]
remove方法
remove方法用于移除列表中的元素,移除的只是第一次出现的元素
>>> numbers = [1,2,3,1]
>>> numbers.remove(1)
>>> numbers
[2, 3, 1]
reverse方法
>>> numbers = [1,2,3,1]
>>> numbers.reverse()
>>> numbers
[1, 3, 2, 1]
sort方法
>>> numbers = [1,2,3,1]
>>> y = numbers
>>> y.sort()
>>> y
[1, 1, 2, 3]
下面的做法是错误的,因为sort会对序列做排序操作,并返回了一个空值
>>> numbers = [1,2,3,1]
>>> y = numbers.sort()
>>> y
Python基础篇(二)的更多相关文章
- Python基础篇(二)_基本数据类型
Python基础篇——基本数据类型 数字类型:整数类型.浮点数类型.复数类型 整数类型:4种进制表示形式:十进制.二进制.八进制.十六进制,默认采用十进制,其他进制需要增加引导符号 进制种类 引导符号 ...
- python基础篇(二)
PYTHON基础篇(二) if:else,缩进 A:if的基础格式和缩进 B:循环判断 C:range()函数和len()函数 D:break,contiue和pass语句 for,while循环 函 ...
- python基础篇-day1
python基础篇 python是由C语言写的: pass 占位符: del,python中全局的功能,删除内存中的数据: 变量赋值的方法: user,pass = 'freddy','freddy1 ...
- python基础篇(六)
PYTHON基础篇(六) 正则模块re A:正则表达式和re模块案例 B:re模块的内置方法 时间模块time A:时间模块的三种表示方式 B:时间模块的相互转换 随机数模块random A:随机数模 ...
- python基础篇(五)
PYTHON基础篇(五) 算法初识 什么是算法 二分查找算法 ♣一:算法初识 A:什么是算法 根据人们长时间接触以来,发现计算机在计算某些一些简单的数据的时候会表现的比较笨拙,而这些数据的计算会消耗大 ...
- python基础篇(一)
PYTHON基础篇(一) 变量 赋值 输入,输出和导入 A:输入 B:输出 C:导入 运算符 A:算数运算符 B:比较运算符 C:赋值运算符 D:位运算符 E:逻辑运算符 F:成员运算符 G:身份运算 ...
- python基础篇(三)
PYTHON基础篇(三) 装饰器 A:初识装饰器 B:装饰器的原则 C:装饰器语法糖 D:装饰带参数函数的装饰器 E:装饰器的固定模式 装饰器的进阶 A:装饰器的wraps方法 B:带参数的装饰器 C ...
- python基础篇(四)
PYTHON基础篇(四) 内置函数 A:基础数据相关(38) B:作用域相关(2) C:迭代器,生成器相关(3) D:反射相关(4) E:面向对象相关(9) F:其他(12) 匿名函数 A:匿名函数基 ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
随机推荐
- 状压dp入门第一题 poj3254
题目链接 http://poj.org/problem?id=3254 转自http://blog.csdn.net/harrypoirot/article/details/23163485 #inc ...
- 最长上升子序列(LIS经典变型) dp学习~5
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java ...
- Spring最核心的功能是什么?使用Spring框架的最核心的原因是什么?
quote:Spring最核心的功能是什么?使用Spring框架的最核心的原因是什么? (IT公司面试手册,可以多看看) spring 框架中核心组件有三个:Core.Context 和 Beans. ...
- spring中用到的设计模式
http://www.cnblogs.com/pengmengnan/p/6717766.html 一 : 工厂模式工厂模式主要是为创建对象提供过度接口,以便将创建对象的具体 过程屏蔽隔离起来,达到提 ...
- memcached集群和一致性哈希算法
场景 由于memcached集群各节点之间都是独立的,互不通信,集群的负载均衡是基于客户端来实现的,因此需要客户端用户设计实现负载均衡算法. 取模算法 N个节点,从0->N-1编号,key对N ...
- MyBatis动态传入表名,字段名参数的解决办法
原文:http://blog.csdn.net/xichenguan/article/details/50393748 要实现动态传入表名.列名,需要做如下修改 添加属性statementType=& ...
- diffMerge安装配置使用
概述: 在用git进行源代码版本维护的时候,常常会进行各代码版本之前区别的查看,例如在每次提交改动前进行git diff 可以看到源文件代码相对相应版本或是远程仓库的改动情况,如果有冲突还需要进行me ...
- 智能家居esp8266对接机智云
依然存在稳定性问题 机智云官网--机智云 一个比较详细的教程--esp8266 一开始采用的是esp12f 可是他太不稳定,总是掉线,机智云的固件我也是刷了无数遍,哎太难了. 我比较懒,走过了太多 ...
- python_如何派生内置不可变类型并修改实例化行为
案例: 我们想要自定义新类型的元组,对传入的可迭代对象我们只保留其中的int类型并且值大于0的元素,如下: [1, -2, 'xxx', 7, [1, 'oo'], 9] >> (1, ...
- 记录一次tomcat下项目没有加载成功
哥们儿实在太low了,web.xml文件中加载的spring mybatis配置文件和配置的文件不是同一个文件名导致的!