一、列表的创建
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可
创建列表:
a = [1,1.2,True,'redhat']
列表里也可以嵌套列表:
a1 = [1,2,3,4,[1,1.2,True,'redhat']]
二、列表的特性
1正向索引
使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符
示例:
list1 = ['Google', 'Runoob', 1997, 2000]
print ("list1[0]: ", list1[0])
输出结果为:
list1[0]: Google
2反向索引
示例:
print("list1的最后一个值: ", list1[-1])
输出结果为:
list1的最后一个值: 2000
3切片
示例:
list2 = [1, 2, 3, 4, 5, 6, 7]
print(list2[1:5])
print(list2[::-1]) #列表顺序颠倒
print(list2[1:])
print(list2[:-1])
输出结果为:
[2, 3, 4, 5]
[7, 6, 5, 4, 3, 2, 1]
[2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6]
4重复
示例:
list1 = ['Google', 'Runoob', 1997, 2000]
print(list1 * 3)
输出结果为:
['Google', 'Runoob', 1997, 2000, 'Google', 'Runoob', 1997, 2000, 'Google', 'Runoob', 1997, 2000]
5成员操作符
示例:
list1 = ['Google', 'Runoob', 1997, 2000]
print('Google' in list1)
print(1997 not in list1)
输出结果为:
True
False
6for循环
示例:
list1 = ['Google', 'Runoob', 1997, 2000]
for i in list1:
print(i)
输出结果为:
Google
Runoob
1997
2000
三、列表实战:
题目:输入某年某月某日(yyyy-MM-dd),判断这一天是这一年的第几天?
解答:
cal = input('输入日期 yyyy-mm-dd:')
date = cal.split('-')拆分日期
print(date)
year = int(date[0])
month = int(date[1])
day = int(date[2])
arr = [0,31,28,31,30,31,30,31,31,30,31,30,31]
num = 0
if ((year % 4 ==0) and (year % 100 !=0) or(year % 400 ==0)):
arr[2] = 29
for i in range(1,len(arr)):
if month > i:
num += arr[i]
else:
num += day
break
print('天数:',num)
四、 列表元素的添加与删除
列表元素的添加
service = [‘http’,‘ftp’,‘ssh’]
1append():追加一个元素到列表
service.append('firewalld')
print(service)
输出结果为:
['http', 'ftp', 'ssh', 'firewalld']
2extend():拉伸 追加多个元素到列表
service.extend(['mysql','nfs'])
print(service)
输出结果为:
['http', 'ftp', 'ssh', 'firewalld', 'mysql', 'nfs']
3insert():在指定索引处插入元素
service.insert(1,'dns')
print(service)
输出结果为:
[‘http’, ‘dns’, ‘ftp’, ‘ssh’, ‘firewalld’, ‘mysql’, ‘nfs’]
列表元素的删除
1remove删除
service = ['http','ftp','ssh']
service.remove('ftp')
print(service)
输出结果为:
['http', 'ssh']
2del删除
service = ['http','ftp','ssh']
del service[1]
print(service)
输出结果为:
['http', 'ssh']
3pop删除
pop函数可以删除列表最后一个元素并返回
>>> service = ['http','ftp','ssh']
>>> service.pop() #删除列表最后一个元素并返回
'ssh'
>>> service
['http', 'ftp']
>>> service.pop()
'ftp'
>>> service
['http']
>>> a = service.pop() #可以将删除的值返回
>>> service
[]
>>> a
'http'
>>> service
[]
>>> service.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop from empty list
五、列表元素的查看
service = [‘http’,‘ftp’,‘ssh’,‘mysql’,‘ssh’,‘http’]
1查看元素在列表中出现的次数
使用count函数可以查看元素在列表中出现的次数
print(service.count('ssh'))
输出结果为:2
2查看指定元素的索引值(可以指定搜索范围)
使用index函数可以查看指定元素的索引值
print(service.index('ssh'))
print(service.index('ssh',4,7)) #在索引值为4到7之间查找元素并返回元素索引值
输出结果为:
2
4
六、列表的排序
1排序
使用sort函数可以实现列表的排序:
service = ['ftp','ssh','http','mysql','http','ssh']默认按照ascii码进行排序的
service.sort(reverse=True)
print(service)
输出结果为:
['ssh', 'ssh', 'mysql', 'http', 'http', 'ftp']
2打乱排序
可以使用random.shuffle函数打乱已经排好序的列表:
import random
li = list(range(0,5))
print(li)
random.shuffle(li)
print(li)
输出结果为:
[0, 1, 2, 3, 4]
[4, 3, 0, 1, 2]
七、列表元素的修改
service = ['https','ftp','ssh','mysql']
1通过索引,重新赋值
service[0] = 'http'
print(service)
输出结果为:
['http', 'ftp', 'ssh', 'mysql']
2通过切片赋值多个元素
service[:2] = ['samba','dns','firewalld']
print(service)
输出结果为:
['samba', 'dns', 'firewalld', 'ssh', 'mysql']
八、列表实战2
**问题描述:**按照下面的要求实现对列表的操作:
产生一个列表,其中有 40 个元素,每个元素是 50 到 100 的一个随机整数
如果这个列表中的数据代表着某个班级 40 人的分数,请计算成绩低于平均分的学生人数
对上面的列表元素从大到小排序并输出li.sort(reverse=True)
解答:
import random
score = []
# 循环40次
for count in range(40):
num = random.randint(50,100)
score.append(num)
print('40人的分数为:',score)
sum_score = sum(score)
print(sum_score)
ave_num = sum_score/40
# 将小于平均成绩的成绩找出来 组成新的列表 并求列表的长度
less_ave = []
for i in score:
if i < ave_num:
less_ave.append(i)
long = len(less_ave)
print(long)
print('平均分数为:%.1f' %(ave_num))
print('有%d个学生低于平均分数:'%(long))
score.sort(reverse=True)
print('排序结果:',score)