Python--列表

数组:存储同一种数据类型的集合 scores = [34,56,90,100..]
列表(打了激素的数组):可以存储任意数据类型

list = [1,6.2,True,'westos']
print(list,type(list))   ##输出list和list的类型

在这里插入图片描述
列表里面也可以嵌套列表

【1】

 list1 = [1, 6.2, True, 'westos']
 list2 = [list1,'hello', 'hedan']
 print(list2, type(list2))

在这里插入图片描述
【2】

list = [1, 6.2, True, 'westos',[1,2]]
print(list, type(list)) 

在这里插入图片描述
列表特性:

service = ['http','ftp','ssh'] 
 【1】 索引
正向索引
  print(service[1])
反向索引 
 print(service[-1])

【2】 切片 
print(service[:])      ##输出整个列表内容
print(service[::-1])   ##输出最后一个元素
print(service[1:])     ##除第一个元素外,输出其他内容
print(service[:-1])    ##除最后一个元素外,输出其他内容

在这里插入图片描述
【3】重复

print(service * 3)

在这里插入图片描述
【4】连接

service1 = ['mysql','firewalld']
print(service + service1)

在这里插入图片描述
【5】成员操作符

print('firewalld' in service1)   ##True
print('mysql' not in service1)   ##False

在这里插入图片描述

练习
【1】:

假定有下面这样的列表:
names = ['fentiao', 'fendai', 'fensi', 'apple']
输出结果为:'I have fentiao, fendai, fensi and apple.'

内容:

 names = ['fentiao', 'fendai', 'fensi', 'apple']
 name1 = ','.join(names[:-1])
 print('\'I have ' + name1 + ' and ' + names[-1] + '.\'')  ##用','的话,apple与'.'之间会有空格

在这里插入图片描述

练习【2】:

题目

输入某年某月某日(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)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

增加:
append():追加一个元素到列表

service = ['http','ftp','ssh']
service.append('firewalld')   ##在列表中增加firewalld元素
print(service)

在这里插入图片描述
extend():拉伸 追加多个元素到列表

service = ['http','ftp','ssh']
service.extend(['mysql','firewalld'])    ##在列表中增加列表['mysql','firewalld']
print(service)

在这里插入图片描述
insert():在指定索引处插入元素

service.insert(1,'https')    ##将https加入列表,使https为列表的第二个元素
print(service)

在这里插入图片描述

列表元素的删除
pop:弹出元素

  >>> service = ['http','ftp','ssh']
  >>> service.pop()   ##默认删除最后一个元素
  'ssh'
  >>> service.pop()
  'ftp'
  >>> service
  ['http']
  
  >>> service = ['http','ftp','ssh']
  >>> service
  ['http', 'ftp', 'ssh']
  >>> service.pop(0)   ##删除第一个元素
  'http'
  >>> service
  ['ftp', 'ssh']

 >>> service = ['http','ftp','ssh']
 >>> a = service.pop(0)
 >>> a   ##a为弹出的元素
 'http'

在这里插入图片描述
在这里插入图片描述
remove():删除列表元素

 service = ['http','ftp','ssh']
 a = service.remove('ftp')   ##指定删除的元素名称
 print(service)
 print(a)    ##删除'ftp',a为空

在这里插入图片描述
在这里插入图片描述
从内存种删除一个元素

 del service[1]   ##删除内存中第二个元素
 print(service)

在这里插入图片描述
列表元素的修改

通过索引,重新赋值
service = ['http','ftp','ssh','mysql'] 
service[1] = 'https'
print(service)

通过切片赋值
service=['http','ftp','ssh','mysql']
service[:2]=['samba','https','dns']
print(service)

通过索引,重新赋值
在这里插入图片描述
通过切片赋值
在这里插入图片描述

列表元素的排序
#默认是按照ASCII玛进行排序的

service=['http','ftp','ssh','mysql','ftp','http']
service.sort()               ##	排序
print(service)
service.sort(reverse=True)       ##逆序
print(service)

在这里插入图片描述

##1-100 的数

import  random
li = list(range(0,101))
print(li)
random.shuffle(li)   ##100个随机排序的数
print(li)

在这里插入图片描述
列表的练习
要求:

有一个列表,其中包括 10 个元素,
例如这个列表是[1,2,3,4,5,6,7,8,9,0],
要求将列表中的每个元素一次向前移动一个位置,
第一个元素到列表的最后,然后输出这个列表。
最终样式是[2,3,4,5,6,7,8,9,0,1]

代码:

方一:
 list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
 list1 = list[1:]
 list1.append(list[0])
 print(list1)

方二:
 li = [1,2,3,4,5,6,7,8,9,0]
 print(li)
 li2 = li.pop(0)
 print(li2)
 li.append(li2)
 print(li)

在这里插入图片描述
在这里插入图片描述
问题描述:

按照下面的要求实现对列表的操作:
产生一个列表,其中有 40 个元素,每个元素是 50 到 100 的一个随机整数
如果这个列表中的数据代表着某个班级 40 人的分数,请计算成绩低于平均分的学生人数
对上面的列表元素从大到小排序并输出li.sort(reverse=True)

import random
score = []
for count in range(40):    ##循环40次
   num = random.randint(50, 100)
   score.append(num)
print('总分为:',sum(score))
avg =  (sum(score)) / 40
less_avg = []           # 将小于平均成绩的成绩找出来 组成新的列表 并求列表的长度
for i in score:
    if i < avg:
       less_avg.append(i)
long=len(less_avg)
print('平均分数为:%.1f' %(avg))
print('有%d个同学低于平均成绩' %long)
score.sort(reverse=True)
print('排序结果:',score)

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值