1 . 什么是列表:
- 列表形如[‘saf’,‘sf’,5,'哈哈‘],是一个可以储存任意数据类型的集合。
- 需要注意的是,列表和数组不同,数组是储存统一数据类型的集合。
创建一个列表:
- zero_li = [ ] #建立一个空列表
- li = [ ‘http’ , ‘ftp’ , 5 ] #建立一个有数据的列表
列表的镶嵌:
- li = [‘http’, ‘ftp’, 5, [‘http’, 5]]
2 . 列表的特性
1)索引
功能:指定获取列表中某一个元素
server = ['http','ftp',12]
print(server[0]) #从左到右索引为0的元素运行结果:
http
反向索引:
server = ['http','ftp',12]
print(server[-1]) #从右到左第一个元素运行结果:
12
2)切片:
功能:指定获取多个元素
service = ['http','ftp',12]
print(service[:]) #列表中的所有元素
运行结果:
['http', 'ftp', 12]print(service[::-1]) #列表中所有元素倒序
运行结果:
[12, 'ftp', 'http']print(service[1:]) #查看除去第一个元素之外的所有元素
运行结果:
['ftp', 12]print(service[:-1]) #除了倒数最后一个元素的其余元素
运行结果:
['http', 'ftp']print(service[:2]) #查看前两个元素
运行结果:
['http', 'ftp']print(service[1:3]) #查看除去第一个到第三个为止的元素
运行结果:
['ftp', 12]
3)重复
简单来说就是将列表中的数据复制n遍追加在列表最后
service = ['http','ftp',12]
print(service * 3) 重复三遍
运行结果:
['http', 'ftp', 12, 'http', 'ftp', 12, 'http', 'ftp', 12]
4)连接
将多个列表连接起来
service = ['http','ftp',12]
service1 = ['mysql','firewalld']
print(service + service1)
运行结果:
['http', 'ftp', 12, 'mysql', 'firewalld']
5)成员操作符
检测某某某是否在列表中,有返回值为True,反之为False
in #判断元素是否属于该列表 属于为真 不属于为假
not in #判断元素是否不属于该列表 属于为真 不属于为假
service = ['http','ftp','ssh']
print('firewalld' in service) #运行结果为False
print('ftp' in service) #运行结果为True
print('mysql' not in service) #运行结果为True
练习题目:
1 . 假定有下面这样的列表:
names = [‘fentiao’, ‘fendai’, ‘fensi’, ‘apple’]
输出结果为:‘I have fentiao, fendai, fensi and apple.’
代码如下:
names = ['fentiao', 'fendai', 'fensi', 'apple']
print('I have ' + ','.join(names[:-1]) + ' and ' + names[-1])
2 . 输入某年某月某日(yyyy-MM-dd),判断这一天是这一年的第几天?
代码如下:
cal = input('请输入日期 yyyy-MM-dd:')
date = cal.split('-') #拆分日期
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 += daybreak
print('天数:',num)
列表元素的增加:
1 . append( ):追加一个元素到列表
service = ['http','ftp','ssh']
service.append('firewalld')
print(service)运行结果为:
['http', 'ftp', 'ssh', 'firewalld']
2 . extend( ):拉伸 追加多个元素到列表中
service = ['http','ftp','ssh']
service.extend(['mysql','nfs'])
print(service)运行结果为:
['http', 'ftp', 'ssh', 'mysql', 'nfs']
3 . insert( ) 在指定索引处插入元素
service = ['http','ftp','ssh']
service.insert(1,'https')
print(service)运行结果为:
['http', 'https', 'ftp', 'ssh']
列表元素的删除
1、删除最后一个元素
格式:列表.pop( )
service = ['http','ftp','ssh']
a=service.pop( )
print(a)
print(service)运行结果为:
ssh
['http', 'ftp']
2、删除指定元素
格式:列表.remove( xxx)
service = ['http','ftp','ssh']
service.remove('ftp') #用字符串删除
print(service)运行结果为:
['http', 'ssh']service.remove(service[0]) #用索引值删除运行结果为:
['ftp', 'ssh']
3、删除列表
格式:del 列表
service = ['http','ftp','ssh']
del service
print(service)运行结果为:
Traceback (most recent call last):File "/home/kiosk/PycharmProjects/20190523/练习.py", line 36, in <module>print(service)
NameError: name 'service' is not defined
列表元素的查看
1 count( ) 查看元素在列表中出现的次数
service = ['ftp','http','http','ssh','ftp','ssh','ftp','ssh']
print(service.count('ftp')) #查看ftp在列表中出现的次数运行结果为:
3
2 index(元素,start,stop) :查看指定元素的索引值,并返回最小索引,也可以指定在一定的索引范围内搜索指定的元素,返回最小索引值
service = ['ftp','http','http','ssh','ftp','ssh','ftp','ssh']0 1 2 3 4 5 6 7 #对应的索引值
print(service.index('ssh')) 不指定的话在全列表中搜索ssh 并返回最小索引运行结果为:
3print(service.index('ssh',4,7))
运行结果为:
5
列表元素的排序
1、从小到大排序 或 从大到小排序
sort: 是应用在 list 上的方法。sort 方法直接在源列表上更改。sorted: 可以对所有可迭代的对象进行排序操作。sorted 方法返回的是一个新的列表,不会更改源列表。
sort示例:
li = [1, 2, 7, 4, 9, 5, 3]
li.sort()
print(li) #从小到大排序
print(li[::-1]) #从大到小排序
sorted 示例:
li = [1, 2, 7, 4, 9, 5, 3]
New_li = sorted(li)
print(li) #序列不变
print(New_li) #从小到大
print(New_li[::-1]) #从大到小
2、打乱顺序
import random
li = [1, 2, 3, 4, 5, 7, 9]
random.shuffle(li)
print(li)运行结果为:
[3, 7, 9, 4, 1, 2, 5]
练习:
题目:输入三个整数x,y,z,请把这三个数由小到大输出:
num = input('请按照格式X,Y,Z 依次输入数字 : ')
num1 = num.split(',')
result = []
for i in num1 :result.append(int(i))
result.sort()
for k in result:print('%d\t' % (k), end='')