Python之--列表及生成式详解(多种组合,灵活变换)

序列是Python中最基本的数据结构。
序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。

列表里可以储存不同的数据类型

li =  [1,1.5,'hello',True]
print(li)
print(type(li))

在这里插入图片描述
列表中可以进行

嵌套

li1 =  [1,1.5,'hello',True,[1,1,2,3,5]]
print(li1)
print(type(li1))

在这里插入图片描述
索引

serveric = ['http','ssh','ftp']
print(serveric[0])    #service第一个字符串
print(serveric[-1])   #service倒数第一个字符串

在这里插入图片描述
切片

serveric = ['http','ssh','ftp']
print(serveric[1:])   #从第一个开始正序,排列两个
print(serveric[:-1])    #从第二个开始倒序,排列两个
print(serveric[::-1])   #全部倒序

在这里插入图片描述
重复

serveric = ['http','ssh','ftp']
print(serveric * 3)  #全部按已有顺序输出三次

在这里插入图片描述
连接

serveric = ['http','ssh','ftp']
serveric1 = ['nfs','samba']
 print(serveric + serveric1)   #输出顺序serveric + serveric1

在这里插入图片描述

列表里的嵌套列表
serveric2 = [['http','80'],['ssh','22'],['ftp','21']]
print (serveric2)

在这里插入图片描述

索引
print(serveric2[0][1])

在这里插入图片描述

切片
print(serveric2[:][1])       #正数第二个
print(serveric2[::-1][0])    #倒数第一个

在这里插入图片描述

成员操作符
serveric1 = ['nfs','samba']
serveric = ['http','ssh','ftp']
print('nfs' in serveric)    #serveric中没有nfs
print('nfs' in serveric1)

在这里插入图片描述

for循环遍历
serveric = ['http','ssh','ftp']
for i in serveric:
    print(i)          #按次序输出service

在这里插入图片描述

练习
1

#输入月份判断季节
    month = int(input('Month: '))
    if month in [3,4,5]:          #列表在这里代表指定的相应值
        print('春季')
    elif month in [6,7,8]:
        print('夏季')
    elif month in [9,10,11]:
        print('秋季')
    elif month in [12,1,2]:
        print('冬季')
    else:
        print('请输入正确值')

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

2

 #输入年月日,判断经过的天数
    time = input('请输入日期 YYYY-MM-DD: ')
    date = time.split('-')    #以间隔符‘-’分开。组成列表date
    year = int(date[0])       #year是第一个字符串
    mon = int(date[1])
    day = int(date[2])
    
    li = [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):
    li[1] = 29

for i in range(12):     #指定月份1~12
    if mon > i + 1:     #这里要算天数,需加上已过月份天数在,加已过本月天数
      #如输入(mon)7,要1~6月份天数相加,再加上本月已经过去的天数
      #mon = 7
      #mon > i + 1
      #i < 6
        num += li[i]
    else:
        num += day     #这里指mon为最小的1,不符合上式
        break
print('这一天是%d年的第%d天'%(year,num))

在这里插入图片描述

添加列表中的项

    serveric = ['http','ssh','ftp']

    1
    print(serveric + ['firewall'])

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190719100525890.png)

    2 append:追加,追加一个元素到列表中
    serveric.append('firewall')
    print(serveric)
  ##

在这里插入图片描述
##

    3.extend:拉伸,追加多个元素到列表中
    serveric.extend(['mysql','firewall'])
    print(serveric)
  ##

在这里插入图片描述
##

    4.insert:在指定索引位置插入元素
    serveric.insert(1,'samba')   #在第二个位置插入元素
    print(serveric)
##

在这里插入图片描述
列表的删除

serveric = ['http','ssh','ftp']

remove:删除指定元素
a = serveric.remove('ssh')
print(serveric)

在这里插入图片描述

del
print(serveric)
del serveric
print(serveric)

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

serveric = ['http','ssh','ftp']

serveric[0] = 'mysql'    #将第一个换为mysql
print(serveric)

在这里插入图片描述

print(serveric[:2])     #输出正序两个字符串
serveric[:2] = ['samba','iscis']     #正序输出替换前两个字符串
print(serveric)

在这里插入图片描述

列表的查看

serveric = ['http','ssh','ftp','ssh']
查看出现的次数
print(serveric.count('ssh'))

在这里插入图片描述

查看指定元素的索引值
print(serveric.index('ssh'))
print(serveric.index('ssh',1,3))    #第二、四位置的ssh索引

在这里插入图片描述
排序

import random

names = ['alice','Bob','coco','Harry']
print(names.sort())
li = list(range(10))
print(li)

在这里插入图片描述

#将列表打乱
random.shuffle(li)
print(li)

在这里插入图片描述

列表生成式

s = '51 5000 10000'    #给定数值

li = []
for item in s.split():      #以空格为间隔符,以item代表其中的项
    li.append(int(item))    #加入列表
print(li)

在这里插入图片描述

k,a,b = li                  #令li中的各个项分别为k a b
print(k,a,b)                #输出k a b

在这里插入图片描述

li = [int(item) for item in s.split()]      #也可直接将值输入
print(li)

在这里插入图片描述

#枚举:返回索引值(可以理解为下标号,从0开始)和对应的value值

for i,v in enumerate('westos'):

   print(i,v)

在这里插入图片描述
zip(将两组值一一对应)

s1 = 'abc'
s2 = '456'

for i in zip(s1,s2):
    print(i)

在这里插入图片描述

for i in zip(s1,s2):
    print(''.join(i))

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值