列表用来有序存放一组相关数据,可以存放不同类型的元素。
列表 命名 建议使用复数。如:scores\names\players
列表中的每个元素都有一个位置编号,称为元素的索引。和字符串一样,也有正向和反向两种索引
回顾例题:输入数字返回月份英文单词,改用列表操作:
months=['jan','feb','mar','apr','may',
'jun','jul','aug','sep','oct',
'nov','dec']
m=int(input('输入月份:'))
print("it's {}.".format(months[m-1]))
1、操作列表元素
列表不仅具有 有序 性,也有 可变 性,可变就体现在以下三个方面:
(1)修改元素
格式: 列表名[索引] = 新值
>>> K=['a','b','c']
>>> K[-1]='d'
>>> K
['a', 'b', 'd']
(2)增加元素
①append()方法
指定在列表 尾部 ,追加新元素的方法。 格式:列表名.append(新元素)
>>> K.append('kun')
>>> K
['a', 'b', 'd', 'kun']
>>> len(K)
4
②insert()方法
insert() 允许新元素 指定 插入位置,其中位置用 索引 表示。
格式:列表名.insert(索引,新元素)
>>> K.insert(0,'ikun')
>>> K
['ikun', 'a', 'b', 'd', 'kun']
(3)删除元素
①del命令
del是python语言内置的命令,用来删除指定的列表元素,格式:del 列表名[索引]
>>> del K[0]
>>> K
['a', 'b', 'd', 'kun']
del可以删除多个元素 del 列表名 [m : n] (第一段 字符串切片和索引 类似)
②pop方法
pop()指定索引从列表中删除对应元素,并 返回 该元素,格式:列表名.pop(索引)
当缺省索引时,默认删除 尾元素
③remove方法
remove()方法则是直接指定删除元素的值。
>>> K.remove('kun')
>>> K
['a', 'b', 'd']
注: 当列表有相同的值时,默认删除排在前面的元素删除
其他
len() in not in count() //与[python-第二段]种介绍的用法类似
index(): 在列表查找指定元素,存在则返回 索引 ,如果存在多个指定元素,则返回 最小 的索引;如果不存在则 报错 !
2、操作整个列表
(1)遍历列表
从头到尾的访问列表元素。比如:
想要按照顺序输出列表的元素放入语句种,利结合之前所学我们可以用
for i in range(个数):
print(”& {} &&&&“.format(列表[ i ]))
for item in 列表名:
print(”& {} &&&&“.format(item)
(2)列表排序
①sort()方法
默认列表的元素 从小到大 排序
降序:列表.sort(reverse = True) 若reverse=False,则是升序
>>> s=['1','3','2']
>>> s.sort()
>>> s
['1', '2', '3']
>>> s.sort(reverse=True)
>>> s
['3', '2', '1']
②sorted()函数
只生成排序后的副本,不改变原列表
>>> a=[1,4,3]
>>> sorted(a)
[1, 3, 4]
>>> a
[1, 4, 3]
(3)列表切片
列表[起始索引:终止索引]
缺省起始索引默认从0开始,缺省终止索引默认到最后一个截至。
还可以指定切片提取元素的方式:每隔n个元素提取一个元素:[起始:终止:n]
当 起始索引 大于 终止索引 ,且n为负值时,表示逆向提取元素
同时确实 起始 或 终止索引 ,且取值为 -1 ,表示取列表逆序组成的切片
(4)列表的扩充
为列表添加新的列表
① + 运算
将两个列表连起来,两个列表本身不会变化
>>> a=[1,2,3,4]
>>> b=[5,6,7]
>>> a+b
[1, 2, 3, 4, 5, 6, 7]
②extend()方法
直接省略赋值语句,改变原列表的扩充
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6, 7]
③ * 方法
重复 n 次 : 列表 * n
(5)列表的复制
① 切边实现
a_copy = a[ : ]
② copy方法
>>> a=[1,2,3]
>>> b = a.copy()
>>> b
[1, 2, 3]
浅拷贝:列表的直接赋值
注:仅仅是让原列表多了个新名字,不建议使用
>>> a=[1,2,3]
>>> b=a.copy()
>>> del b[]
File "<pyshell>", line 1
del b[]
^
SyntaxError: invalid syntax
>>> del b[0]
>>> b
[2, 3]
>>> a
[1, 2, 3]
而直接赋值 : 最后结果 a = [2,3]
(6)列表的删除
①删除列表元素,不删除列表的存在 : del 列表 [ : ]
②删除这个列表,列表也将不存在: del 列表
>>> del a
>>> a
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
NameError: name 'a' is not defined
3、数值列表
(1)创建数值列表
① input()函数
直接用 a = input("输入数值列表") 返回的是一个 字符串
因此可以用 eval() 函数进行转换 ,可以理解为去掉了在列表两边的 单引号 。
>>> a = eval(input("输入数值列表:\n"))
输入数值列表:
[1,2,3,4,5,6,7]
>>> a
[1, 2, 3, 4, 5, 6, 7]
>>> type(a)
<class 'list'>
② list()函数转换
>>> b = list(range(1,8))
>>> b
[1, 2, 3, 4, 5, 6, 7]
直接用 b = range(1,8) ,则返回的还是range(1,8)
(2)列表生成式
生成一个特定含义的列表
>>> n = []
>>> for i in range(1,11):
n.append(i**2)
>>> n
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
或者 :列表 = [循环变量的表达式 for 循环变量 in range()函数]
n = [i ** 2 for i in range(1,11)]
4、元组
元组和列表的区别 : 元组用 () ,列表用 [ ] ; 元组不能被修改
创建方法: a = ( 1,2,3,4) 或者 a = 1,2,3,4 当只有一个元素,要在后面加 ,
元组可以作为列表的元素,当然,不可以修改里面的
>>> a = [('kun',99),('hei',88)]
>>> a[0][0]
'kun'
>>> a[1]
('hei', 88)
>>> a[0][1]=100
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
5、转换函数
list(): 将 字符串 或者 元组 转化为 列表
tuple(): 将 列表 转换为 元组
字符串转换为列表时,单个字符都会被拆开,可以用第一段出现的 split() 解决!
>>> a='I am IKUN'
>>> b=list(a)
>>> b
['I', ' ', 'a', 'm', ' ', 'I', 'K', 'U', 'N']
>>> b=a.split( )
>>> b
['I', 'am', 'IKUN']
课本上还有很多实例,参考p85~p93
------------------------------------------------------ 下一段 字典与集合