列表
首先先说明中python中数组下标的使用,在java,c或者c++中,每个数组的下标必须是正数,不能出现负数,如在java,c或者c++中使用a[-1],编辑器会报错,而在python中数组的访问时可以出现负数下标,表示倒数第几个元素。
- list列表的定义
Python中列表的定义比较简单,不需要想java中需要用List类创建的一个对象。在java中不同类型的对象是不能存放在同一个列表中,而Python中同一个list可以存放不同类型的数据,同时也可以存放一个obj。
格式:list=[……..]
>>>list=['defrew','234','234','dew','2342',238492,'f']
>>>list
['defrew', '234', '234', 'dew', '2342', 238492, 'f']
列表的重复定义:
list=list * count
>>>list=['haha']
>>>list * 4
['haha', 'haha', 'haha', 'haha']
list=[1,3,44’234’]
- 列表中元素的增加
函数/表达式 | 说明 | 举例 |
---|---|---|
+ | 向列表的末尾条件一个新的列表 | >>>list=list+['a'] >>>list [1,3,44,'234','a'] |
addpend( x ) | 向列表的末尾添加一个元素 | >>>list.append(10) >>>list [1,3,44,'234','a',10] |
extend( list ) | 向列表的末尾添加一个list | >>>list.extend([5,6]) >>>list [1,3, 44,'234','a',10,5,6] |
insert( i , x ) | 在i的位置添加元素x | >>>list.insert(0,'x') >>>list ['x',1,3,44,'234','a',10,5,6] |
list=[1,2,3,4,5,6]
- 列表的删除
函数 | 说明 | 举例 |
---|---|---|
del | 删除特定位置的元素 | >>>del list[3] >>>list [1,2,3,5,6] |
remove(x) | 删除特定值得元素 | >>>list.remove(3) >>>list [1,2,5,6] |
pop([]) | 弹出指定位置的元素,若参数i不存在时,弹出最后一个元素 | >>>list.pop() 6 >>>list [1, 2, 5] |
- 列表的更新
对于列表的更新,只需要将特定未知的元素进行从新复制,这样就可以实现更新
>>>list[i]=x
list=[1,2,3,4,5,6]
- 检查列表中元素是否存在
函数 | 说明 | 举例 |
---|---|---|
count(str) | 判断str元素出现的次数 | >>>list.count(1) 1 |
value in list | 使用in表达式检测元素是否存在,若存在返回True | >>>4 in list True >>>7 in list False |
index(str) | 返回某个元素的准确位置,若元素不在列表中则出错 | >>>list.index(3) 2 list.index(7) 7 is not in list |
list=[1,2,3,4,5,6]
- 列表的迭代
>>> for key in d:
print(key)
如何将列表的索引和值都打印出来呢?使用Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:
>>>for key in enumerate(list)
print key
0 1
1 2
....
list=[1,2,3,4,5,6]
- 列表的常用函数
函数 | 说明 | 举例 |
---|---|---|
cmp(list1,list2) | 比较两个列表的元素,先比较第一个元素,若第一个元素相同,则开始对比第二个元素,若不同不在比较。若两个列表相同,则返回0,若list1>list2,返回1,若list1 | |
len(list) | 返回列表的长度或者元素个数 | >>>len(list) 6 |
max(list)/min(list) | 返回列表中的最大值和最小值 | |
sorted(list[,reverse=True]) | 默认为升序排序,若第二个参数存在且值为True,则为降序排序 | |
reversed(list) | 逆序排序 |
- 列表的切片
对于列表而言找打某一个元素比较简单,使用list[i]就可以找到这个元素了,那对于找到某一范围内的元素,python的列表提供了切片的方法,可以找到某一个范围内的元素。
格式:list[start: end]
list=[1,2,3,4,5,6]
(1).取前3个元素,若从0开始取,则第一个参数可以省略
>>>list[0:3]
[1, 2, 3]
>>>list[:3]
[1, 2, 3]
(2).取1到4个元素
>>>list[1:4]
[2, 3, 4]
(3).取倒数第一个到倒数第三个
>>>list[-3:-1]
[4, 5]
(4).取最后两个
>>>list[-2:]
[5, 6]
(5).若想在列表中取前4个,每两个中去一个
>>>list[:4:2]
[1, 3]
(6).复制一个列表
>>>list1=list[:]
>>>list1
[1, 2, 3, 4, 5, 6]
元组
元组由简单的对象组构成,元组与列表相似,但是元组不能在原处修改。元组位置有序的对象集合,元组通过偏移来访问。
为什么有了列表还要元组?元组的不变性提供了某种完整性,可以确保元组在程序中不被另一个引用修改,元组类似于其他语言中的常数。
- 元组的定义
对于tuple的定义和list定义是一样的,不过tuple定义之后就不能修改值了。
>>>a=(1,2,3,4,5)
对于定义tuple只有一个元素的元组,对于以下定义会产生歧义
>>>a=(1)
1
以上定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
那么对于只有有个元素的元组的定义时必须加上逗号,例如:
>>>a=(1,)
(1,)
元祖的定义之后它的值就不会改变,但是对于元组中元素是没有限制的,元素可以是tuple,list,dict等,那么定义一个可变的元组,那么元组中的元素中有一个可变的列表,例如:
>>>a=(1,2,[2,3,4,5])
>>>a
(1, 2, [2, 3, 4, 5])
- 元组的检索
对于元组的检索使用和list检索相同的方法就行 - 元组和list的差别
**相同点**
(1).使用同样的方式遍历
(2).以同样的方法进行切片和检索
**不同点**
(1).元组中的元素一旦定义就无法改变,所以就无法使用append()和extend()方法来增加元素。
(2).元组中的元素是无法修改的,所以也是不发使用remove()和pop()方法。
**tuple相对于list的优点**
(1).元组的速度比列表快
(2).元组对于不需要改变的数据进行‘写保护’,安全
(3).有时一些元组可以做字典键
- 元组和list之间的相互转化
![这里写图片描述](https://img-blog.csdn.net/20171231120236187?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FpcnVpMTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/ dissolve/70/gravity/SouthEast)