python基础学习之列表

列表是Python中最基本的数据结构之一,它是一种有序可变的集合,集合内可以存放任何数据类型,并且可对集合的元素进行增删改查操作。

一、列表的创建

在一个方括号([])内添加列表元素的,元素之前通过逗号分隔开,如下:

list1 = [1,2,3,4,5]
list2 = ['a',b',1,'d','e']
list3 = ['python','java','C','C++']

二、访问列表 

可以通过索引访问列表中的某个元素,列表的索引值是0从开始,如下:

>>> list1 = [1,2,3,4,5]
>>> list1[0]
1
>>> 

与字符串一样,列表也可以进行截取、组合等。

也可以通过索引为负数的形式获取列表元素,索引是从-1开始以此类推,当索引为-1时表示取倒数第一元素,-2为倒数第二个元素,...

>>> list3 = ['python','java','c','c++','go','shell']
>>> print(list3[-1])  #获取索引为-1的元素值shell
['shell']
>>> print(list3[-4])  #获取索引为-4的元素值c
c
>>> print(list3[-1:-4:-1])  #通过从右往左的顺序获取索引-1到-4之前的元素
['shell', 'go', 'c++']
>>> 

 上例中list3[-1:-4:-1]表示从右往左获取-1到-4之前的列表元素,其中-1:-4表示获取-1到-4之前的元素,最后一个表示步长,步长为负数表示从右往左获取元素,正数表示从左往右获取元素,没有步长的话表示默认按照步长为1从左往右的顺序获取元素。

三、python列表脚本操作符

列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

Python 表达式结果描述
len([1, 2, 3])3长度
[1, 2, 3] + [4, 5, 6][1, 2, 3, 4, 5, 6]组合
['Hi!'] * 4['Hi!', 'Hi!', 'Hi!', 'Hi!']重复
3 in [1, 2, 3]True元素是否存在于列表中
for x in [1, 2, 3]: print x,1 2 3迭代

四、列表操作函数

1、cmp(list1, list2):比较两个列表的元素 


2、len(list):列表元素个数 

>>> list1 = [1,2,3,4]
>>> len(list1)
4
>>> 

3、max(list):返回列表元素最大值 

>>> list1 = [1,2,3,4]
>>> max(list1)
4
>>> 

4、min(list):返回列表元素最小值 

>>> list1 = [1,2,3,4]
>>> min(list1)
1
>>> 

5、count():在list中统计object的个数。

返回值:返回object的个数。

>>> list1=[66, 55, 44, 33, 22]
>>> list1.count(22)
1

6、index(self, object, start, stop):在list中查找object的索引。

返回值:返回object在list中的的位置索引,其中,object表示需要查找的元素;

start表示list中查找的起始位置;stop表示list中查找的末尾位置。

>>> list1=[66, 55, 44, 33, 22]
>>> list1.index(22)
4

五、列表常用操作方法

1、修改列表元素

>>> list1=['张三','男',21]
>>> list1[0]='李四'
>>> list1
['李四', '男', 21]
>>> 

2、删除列表元素

删除列表中元素有3中方式:

(1)使用 del 语句来删除列表的的元素;

>>> list1=[1,2,3,4,5,6]
>>> del list1[0]
>>> list1
[2, 3, 4, 5, 6]

(2)使用pop()移除某元素并返回该元素,pop参数为列表的索引,不填写默认为最后一个元素;

>>> list2=[123,'asdf','wsx','qwer',56]
>>> list2.pop(2)
'wsx'

(3)使用remove()删除从左找到的第一个指定元素,remove的参数值为要删除元素值。

>>> list3=['zhangsan','lisi','lisan',22]
>>> list3.remove(22)
>>> list3
['zhangsan', 'lisi', 'lisan']

3、增加列表元素

增加列表元素有4中方式:

(1)append()追加单个元素到List的尾部,只接受一个参数,参数可以是任何数据类型,被追加的元素在List中保持着原结构类型,此元素如果是一个list,那么这个list将作为一个整体进行追加。

>>> list3=['zhangsan','lisi','lisan',22]
>>> list3.append('wangwu')
>>> list3
['zhangsan', 'lisi', 'lisan', 22, 'wangwu']
>>> list4=[22,33,44]
>>> list3.append(list4)
>>> list3
['zhangsan', 'lisi', 'lisan', 22, 'wangwu', [22, 33, 44]]

(2)extend(self, iterable) 将一个列表中每个元素分别添加到另一个列表中,只接受一个参数;extend()相当于是将list B 连接到list A上。

>>> list3.extend('zhaoliu')
>>> list3
['zhangsan', 'lisi', 'lisan', 22, 'wangwu', [22, 33, 44], 'z', 'h', 'a', 'o', 'l', 'i', 'u']
>>> 

iterable参数表示能够迭代的元素(数字不能迭代),字符串是可以迭代的,如上例上字符串一个字符一个字符的迭代添加在列表中。

>>> list4=[22,33,44]
>>> list3.extend(list4)
>>> list3
['zhangsan', 'lisi', 'lisan', 22, 'wangwu', [22, 33, 44], 'z', 'h', 'a', 'o', 'l', 'i', 'u', 22, 33, 44]

 将list4中的元素分别添加进list3中。

(3) insert() 将一个元素插入到列表中,但其参数有两个(如insert(1,"qaz")),第一个参数是索引点,即插入的位置,第二个参数是插入的元素。

>>> list4=[22,33,44]
>>> list4.insert(3,55)
>>> list4
[22, 33, 44, 55]

(4)+ 加号,将两个list相加,会返回到一个新的list对象,注意与前三种的区别。前面三种方法(append, extend, insert)可对列表增加元素的操作,他们没有返回值,是直接修改了原数据对象。 将两个list相加,需要创建新的list对象,从而需要消耗额外的内存,特别是当list较大时,尽量不要使用“+”来添加list,而应该尽可能使用List的append()方法。

>>> list2=[66]
>>> list5=list2+list4
>>> list5
[66, 22, 33, 44, 55]

4、列表元素排序

sort()

>>> list5
[22, 33, 44, 55, 66]
>>> list5.sort(reverse=True)
>>> list5
[66, 55, 44, 33, 22]

5、遍历列表元素

>>> list5
[66, 55, 44, 33, 22]
>>> for value in list5:
	print(value)

#返回结果
	
66
55
44
33
22

6、复制列表

copy(self)

用途:复制一份列表。

返回值:返回列表的一个副本(修改副本不会改变原有的列表)。

>>> list1=list5.copy()
>>> list1
[66, 55, 44, 33, 22]
>>> 

六、列表切片

切片操作(slice)可以从一个字符串中获取子字符串(字符串的一部分)。我们使用一对方括号、起始偏移量start、终止偏移量end 以及可选的步长step 来定义一个分片。

格式: [start:end:step]

start:开始索引

end:结束索引

step:步长

[:] 提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串

[start:] 从start 提取到结尾

[:end] 从开头提取到end - 1

[start:end] 从start 提取到end - 1

[start:end:step] 从start 提取到end - 1,每step 个字符提取一个

左侧第一个字符的位置/偏移量为0,右侧最后一个字符的位置/偏移量为-1

>>> list3=['zhangsan', 'lisi', 'lisan', 22, 'wangwu', [22, 33, 44, 55], 'z', 'h', 'a', 'o', 'l', 'i', 'u', 22, 33, 44]
>>> list7 = list3[2:5]
>>> list7
['lisan', 22, 'wangwu']
>>> print(list3[::2])
['zhangsan', 'lisan', 'wangwu', 'z', 'a', 'l', 'u', 33]
>>> print(list3[2::3])
['lisan', [22, 33, 44, 55], 'a', 'i', 33]

七、元祖,字典,列表,字符串之间转换

直接声明的list和tuple无法通过dict()转换成dict类型,直接声明的dict可以通过tuple()和list()分别转换成tuple和list类型(结果只包含了keys),可是此时却能通过dict()反转回原来的dict类型。

字典

1、字典--->元祖

结果只包含了keys

>>> dict={'name':'zhangsan','age':7}
>>> print(tuple(dict))
('name', 'age')
>>> 

字典中的值value转换成元祖

2、字典-->字符串

>>> dict={'name':'zhangsan','age':7}
>>> print(str(dict))
{'name': 'zhangsan', 'age': 7}
>>> 

3、字典--->列表

结果只包含了keys

>>> dict={'name':'zhangsan','age':7}
>>> list(dict)
['name', 'age']
>>> type(list(dict))
<class 'list'>
>>> 

 字典中的值value转换成列表

>>> dict={'name':'zhangsan','age':7}
>>> a = list(dict.values())
>>> print(a)
['zhangsan', 7]
>>> type(a)
<class 'list'>
>>> 

元祖

1、元祖--->字符串

>>> b = (1,2,3,4,5)
>>> print(str(b))
(1, 2, 3, 4, 5)
>>> 

2、元祖--->列表

>>> b = (1,2,3,4,5)
>>> print(list(b))
[1, 2, 3, 4, 5]
>>> type(list(b))
<class 'list'>
>>> 

3、元祖不能转换成字典

列表

1、列表--->字符串

>>> c=[1,2,3,4,5]
>>> str(c)
'[1, 2, 3, 4, 5]'
>>> type(str(c))
<class 'str'>
>>> 

2、列表--->元祖

>>> c=[1,2,3,4,5]
>>> tuple(c)
(1, 2, 3, 4, 5)
>>> type(tuple(c))
<class 'tuple'>
>>> 

3、列表不能转换成元祖

字符串

1、字符串-->字典

>>> eval("{'name':'zhangsan','age':7}")
{'name': 'zhangsan', 'age': 7}
>>> 

2、字符串-->元祖

>>> tuple(eval("{'name':'zhangsan','age':7}"))
('name', 'age')
>>> 

3、字符串-->列表

>>> list(eval("{'name':'zhangsan','age':7}"))
['name', 'age']

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值