我的Python成长之路---第一天---Python基础(6)---2015年12月26日(雾霾)
七、列表——list
Python的列表是一种内置的数据类型,是由Python的基本数据类型组成的有序的集合。有点类似C语言的数组,但与数组不同的是,Python在定义列表的时候不用指定列表的容积(长度),可根据需要任意扩展,另外列表的内的元素可以是不同的数据类型,当然既然是任何数据类型,当然也包括另一个列表也就是嵌套。Python中列表使用中括号[]括起来,例如[1,2,True,'ABC',[5,'678']].
1、列表的切片
通字符串一样列表也支持切片操作,例如我们有一个列表A_list = ['Michael', 'Bob', 'Tracy']
1)列表中索引号为n的元素(一样是从0开始计数哦)
>>> A_list[]
'Bob'
2)从第m个元素到第n个元素
>>> A_list[:]
['Michael', 'Bob']
3)从第m个元素到第n个元素,步长为p(也就是每隔p-1个字符)
>>> A_list[::]
['Michael', 'Tracy']
说明:同字符串一样,列表的切片同样省略索引号和支持复数,用法与字符串一样,这里就不复述了。
2、列表的内置方法
Python中查看一个对象的内置方法和属性可以使用内置的dir方法,比如我们查看列表A_list的方法和属性
>>> dir(A_list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
常用的方法有:
>>> A_list = ['Michael', 'Bob', 'Tracy']
>>> A_list.append('Peter') # 在末尾插入一个新的元素
>>> A_list
['Michael', 'Bob', 'Tracy', 'Peter']
>>> A_list.insert(1, 'Jack') # 在指定位置(索引号)插入一个新的元素
>>> A_list
['Michael', 'Jack', 'Bob', 'Tracy', 'Peter']
>>> A_list.pop() # 删除最后一个元素,并返回该元素,如果列表已经为空在执行pop方法会报错,类似IndexError: pop from empty list
'Peter'
>>> A_list
['Michael', 'Jack', 'Bob', 'Tracy']
>>> A_list.remove('Jack') # 删除指定的元素,注意这里接受的参数是元素,而不是索引号,如果元素不存在则报错,类似ValueError: list.remove(x): x not in list
>>> A_list
['Michael', 'Bob', 'Tracy']
>>> A_list.index('Bob') # 返回指定元素所在位置的索引号,如果元素不存在则报错ValueError: 'dafda' is not in list
1
>>> A_list.sort() # 排序,注意Python3已经不支持不同类型数据的排序,如果列表内元素的类型不一致,就会报错,类似TypeError: unorderable types: str() < list()
>>> A_list
['Bob', 'Michael', 'Tracy']
>>> A_list.reverse() # 翻转列表的元素位置
>>> A_list
['Tracy', 'Michael', 'Bob']
>>> B_list = ['Jack','Peter']
>>> A_list.extend(B_list) # 将另一个列表的每一个元素追加到列表的末尾,注意与append不同,append会把另一列表当成一个元素追加到列表的末尾
>>> A_list
['Tracy', 'Michael', 'Bob', 'Jack', 'Peter']
>>> A_list.count('Bob') # 返回列表的某一个元素重复的个数,如果元素不存在返回0,不会报错
1
我们上面说index方法和remove方法只能返回或删除第一查找到的元素,如果一个列表中重复出现多次我们如何处理呢,这时候我们可以这么处理
全部删除:原理就是先求出出现了多少次,然后通过循环删除
#!/usr/bin/env python
# coding:utf-8
name_list = ['Michael', 'Jack', 'Bob', 'Tracy', 'Peter', 'Jack'] # 这里有两'Jack'
# 返回所有'Jack'的索引
for i in range(name_list.count('Jack')):
name_list.remove('Jack')
print(name_list)
查询所有的索引号,原理就是先求出一共出现了多少次,第一次直接查找返回说因,从第二次开始开始,从上一次的索引位置的下一个位置进行切片,然后再进行查,那么这一次的索引号就是上一次的索引号+加上本次的索引+1,依次类推
#!/usr/bin/env python
# coding:utf-8
name_list = ['Jack', 'Michael', 'Jack', 'Bob', 'Tracy', 'Peter', 'Jack'] # 这里有三个'Jack'
# 返回所有'Jack'的索引
index_num = 0 # 定义初始索引号
index_list = [] # 定义用来存储索引号的列表
for i in range(name_list.count('Jack')):
if i != 0: # i不等于0也就是说不是第一次查找
index_num = name_list[index_num+1:].index('Jack') + index_num + 1
else: # 否则就是第一次查找,直接返回索引号即可
index_num = name_list.index('Jack')
index_list.append(index_num) # 将索引号追加到index_list中
print(index_list)

八、元祖——tuple
元祖和列表非常类似,但是元祖一旦初始化就不能修改,所以元祖除了可以切片外没有列表的那些方法。
但是我们所说的元祖的不可变不是绝对的,也可以是“可变的”,那就是元祖里的元素是其他可变的数据类型,如列表等
例如:t = ('a', 'b', ['A', 'B'])
注意里面列表,我们要对这个列表进行一些修改操作:
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t
('a', 'b', ['X', 'B'])
>>> t[2].append('C')
>>> t
('a', 'b', ['X', 'B', 'C'])
可以看出如果元祖里有可变数据类型的元素,那么该元素是依然可以修改的,这使得元祖貌似被修改了,其实并没有修改,因为Python一切皆指针。
我的Python成长之路---第一天---Python基础(6)---2015年12月26日(雾霾)的更多相关文章
- 我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)
2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算 ...
- 我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)
作业二:三级菜单 三级菜单 可一次进入各个子菜单 思路: 这个题看似不难,难点在于三层循环的嵌套,我的思路就是通过flag的真假来控制每一层的循环的,简单来说就是就是通过给每一层循环一个单独的布尔变量 ...
- 我的Python成长之路---第一天---Python基础(2)---2015年12月26日(雾霾)
三.数据类型 Python基本类型(能够直接处理的数据类型有以下几种)主要有5种 1.整数(int) Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如 ...
- 我的Python成长之路---第一天---Python基础(4)---2015年12月26日(雾霾)
五.数据运算与数据运算符 1.算术运算符 算术运算符 运算符 描述 示例 + 加法 >>> 14 - 5 9 - 减法 >>> 14 - 5 9 * 乘法 &g ...
- 我的Python成长之路---第一天---Python基础(5)---2015年12月26日(雾霾)
六.流程控制 与C语言不通的事Python的流程控制的代码块不是用{}花括号表示的,而是用强制缩进来,而且缩进必须一致,官方推荐是使用4个空格,不建议使用使用tab(制表符)做缩进,一是不同的系统ta ...
- 我的Python成长之路---第一天---Python基础(3)---2015年12月26日(雾霾)
四.变量和常量 变量是用来存储程序运行期间需要临时保存可以不断改变的数据的标识符.Python有自身的内存回收机制,所以在开发过程中不用考虑变量的销毁等 Python中的变量名命名有如下规则: 1.变 ...
- 我的Python成长之路---第一天---Python基础(作业1:登录验证)---2015年12月26日(雾霾)
作业一:编写登录接口 输入用户名密码 认证成功系那是欢迎信息 输错三次后锁定 思路: 1.参考模型,这个作业我参考了linux的登录认证流程以及结合网上银行支付宝等锁定规则 1)认证流程参考的是Lin ...
- python成长之路第一篇(5)文件的基本操作
一.三元运算 我们在上章学习的if,,else,,有一种简便的方法 他的表达式是这样的:变量 = 值1 if 条件 else 值2 解释过来就是如果aaa等于sss则输出值1否则输出值2 二.类的概念 ...
- PYthon成长之路第一篇(1)__字符串初识
今天一起走进python的代码世界,一起领悟python的魅力 在很多学习python的书中都会以 print “Hello,world!” 这样的而一个程序为开始,那么其中的 hello,worl ...
随机推荐
- c语言实现tree数据结构
该代码实现了tree的结构.依赖dyArray数据结构.有first一级文件夹.second二级文件夹. dyArray的c实现參考这里点击打开链接 hashTable的c实现參考这里点击打开链接 ...
- 20140603 对error.c 用于分析源代码
20140603 对error.c 用于分析源代码 继续看error.c该功能 买家现在将自己的代码和数据汇编例如,下面的: 1.#include <stdio.h> 2 #inc ...
- HttpModule、HttpHandler和Page的生命周期
1.引言 2.两个处理步骤 2.1.创建ASP.NET环境 2.2.用触发的MHPM事件处理请求 3.什么事件中应该做什么 4.示例代码 5.深入ASP.NET页面事件 1.引言 这篇文章我们将试图理 ...
- Html.text(转载)
2.Html.ValidationSummary:用来显示ModelState字典中所有验证错误的无序列表,使用布尔值类型参数(true)来告知辅助方法排除属性级别的错误,只显示ModelState中 ...
- UIScreen的 bound、frame、scale属性
CGRect bound = [[UIScreen mainScreen] bounds]; // 返回的是带有状态栏的Rect CGRect frame = [[UIScreen mainSc ...
- java中只能有一个实例的类的创建
Java中,如果我们创建一个类,想让这个类只有一个对象,那么我们可以 1:把该类的构造方法设计为private 2:在该类中定义一个static方法,在该方法中创建对象 package test; / ...
- java集群
java集群 分类: java学习2011-05-12 09:12 7531人阅读 评论(9) 收藏 举报 java服务器负载均衡ejb集群数据库 序言 越来越多的关键应用运行在J2EE(Java 2 ...
- 我的Python成长之路---第七天---Python基础(22)---2016年2月27日(晴)
socket网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- C语言之一数三平方
一数三平方 有这样一个六位数,它本身是一个整数的平方,其高三位和低三位也分别是一个整数的平方,如225625=475*475,225=15*15,625=25*25;统计所有符合该条件的六位数 源代码 ...
- hibernate的配置 1
hibernate 是一种ORM框架,是ORM框架中一个典范 ORM叫做对象关系映射 是面向对象语言和关系型数据库之间的映射关系 所以只有在面向对象语言或者关系型数据库没用的时候ORM才会消失 ORM ...