1 列表的基本定义

列表是最常用的Python数据类型。
列表的数据项不需要具有相同的类型,可以存储任意的数据类型
序列都可以进行的操作包括索引,切片,加,乘,检查成员等。
序列中的每个元素都分配一个索引,第一个索引是0,第二个索引是1,依此类推

2 列表的创建

创建列表时,列表中的元素以,分隔开来,列表以[ ]括起来
创建列表时也可使用嵌套列表,即一个新的列表由新元素与另外一个列表组成

#列表里:可以储存不同的数据类型
li = [1,1.5,'hello',True]
print(li)
print(type(li))

#列表里也可以嵌套列表(列表也是一种数据类型)
li1 = [1,1.5,'hello',True,[1,2,3,4,5]]
print(li1)
print(type(li1))

3 列表的特性

3.1 索引

service = ['http','ssh','ftp']
#索引
 print(service[0])     #从左到右索引第一个元素,http
 print(service[-1])    #从右至左索引第一个元素,ftp

3.2 切片

#切片
print(service[1:])      ##除第一个元素以外的为所有元素,['ssh', 'ftp']
print(service[:-1])     ##除最后一个元素以外的所有元素,['http', 'ssh']
print(service[::-1])    ##将列表反转,['ftp', 'ssh', 'http']

3.3 重复: list*n ##n:重复的次数

#重复
 print(service * 3)    #将列表重复输出3次,['http', 'ssh', 'ftp', 'http', 'ssh', 'ftp', 'http', 'ssh', 'ftp']

3.4 连接:+

#连接
 service1 = ['nfs','samba']
 print(service + service1)   ##输出['http', 'ssh', 'ftp', 'nfs', 'samba']

3.5 成员操作符
in ##判断元素是否属于该列表,存在为真,不存在为假
not in ##判断元素是否不属于该列表,不存在为真,存在为假

#成员操作符
 print('nfs' in service)
 print('nfs' in service1)

#for循环遍历
for i in service:
   print(i)

3.6 列表里嵌套列表时的索引和切片

#列表里嵌套列表
service2 = [['http','80'],['ssh','22'],['ftp','21']]
#索引
print(service2[0][1])

#切片
print(service2[:][1])
print(service2[:-1][0])
输出结果为:
80
['ssh', '22']
['http', '80']

4 列表的操作

4.1 列表的增加:

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

#1 连接
 print(service + ['firewalld'])

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

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

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

4.2 列表的删除:

service = ['http','ssh','ftp']
#1.pop():默认删除最后一个元素,删除的元素可被变量吸收
b = service.pop()
a = service.pop(1)      #删除指定元素
print(service)
print(b)
print(a)

结果:
[‘http’]
ftp
ssh

#2.remove:删除指定的元素
 a = service.remove('ssh')
 print(service)

#3.del:删除列表
print(service)
del service
print(service)

4.3 列表的修改:

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

#通过索引 重新赋值
service[0] = 'mysql'
print(service)

#通过切片
print(service[:2])
service[:2] = ['samba','iscsi']
print(service)

4.4 列表的查看:

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

#查看出现的次数
print(service.count('ssh'))

#查看指定元素的索引值
print(service.index('ssh'))
print(service.index('ssh',0,3))

4.5 列表的排序与乱序:

##排序 
>>> service = ['http','ftp','ftp','ssh']
>>> service.sort(reverse=True)  ##倒叙排列
>>> print(service)
['ssh', 'http', 'ftp', 'ftp']
>>> service.sort()              ##正序排列
>>> print(service)
['ftp', 'ftp', 'http', 'ssh']
>>> phone = ['a','k','F','z']
>>> phone.sort(key=str.upper)   ##忽略大小写排序
>>> phone
['a', 'F', 'k', 'z']

#随机打乱列表
>>> import random               #加载模块
>>> a = list(range(10))         #生成列表
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  #列表原来的内容
>>> random.shuffle(a)           #打乱列表元素顺序
>>> a
[2, 0, 7, 3, 6, 4, 1, 9, 5, 8]  #打乱之后的列表
>>> b = ['c','d','e','f','g']   #列表原来的内容
>>> random.shuffle(b) 
>>> b
['c', 'g', 'f', 'e', 'd']       #打乱之后的列表

4.6 python常用内置方法:枚举和zip

之前已经介绍min、max、sum方法,现在再介绍一下枚举和zip

#枚举:返回索引值和对应的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 w
1 e
2 s
3 t
4 o
5 s
('a', '4')
('b', '5')
('c', '6')
a4
b5
c6

5 列表的练习

5.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('请输入正确值:')

5.2 练习二:

"""
输入如下格式的日期,判断为该年的第多少天
年月日:YYYY-MM-DD

"""
time = input('请输入日期 YYYY-MM-DD:')
date = time.split('-')
year = int(date[0])
month = 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):
    if month > i + 1:
        num += li[i]
    else:
        num += day
        break
print('这一天是%d年的第%d天' %(year,num))

python输出重复数的行数_linux系统


5.3 练习三:

初级用户管理系统:

"""
1.系统里面有多个用户,用户的信息目前保存在列表里面
    users = ['root','westos']
    passwds = ['123','456']
2.用户登陆(判断用户登陆是否成功
    1).判断用户是否存在
    2).如果存在
        1).判断用户密码是否正确
        如果正确,登陆成功,退出循环
        如果密码不正确,重新登陆,总共有三次机会登陆
    3).如果用户不存在
    重新登陆,总共有三次机会

"""

users = ['root','westos']
passwds = ['123','456']

trycount = 0

while trycount < 3:
     inuser = input('用户名: ')
     inpasswd = input('密码: ')

     trycount += 1

     if inuser in users:
         index = users.index(inuser)
         passwd = passwds[index]
         if inpasswd == passwd:
             print('%s用户登录成功' %inuser)
             break
         else:
             print('%s登录失败:密码错误' %inuser)
     else:
         print('%s用户不存在' %inuser)
 else:
     print('尝试超过3次,请稍后...')

添加后台管理员:

"""
1. 后台管理员 admin 密码:admin
2. 管理员才能看到会员信息
3. 会员信息包含
        添加会员信息
        删除会员信息
        查看会员信息
        退出
"""
print('管理员登录'.center(50,'*'))
inuser = input('UserName: ')
inpasswd = input('Password: ')

users = ['root','westos']
passwds = ['123','456']

if inuser == 'admin' and inpasswd == 'admin':
    print('管理员登录成功')
    print('会员管理'.center(50,'*'))
    while True:
        print("""
            菜单
        1.  添加会员信息
        2.  删除会员信息
        3.  查看会员信息
        4.  退出
        """)
        choice = input('请输入您的选择: ')
        if choice == '1':
            print('添加会员信息'.center(50,'*'))
            addUser = input('添加会员名: ')
            if addUser in users:
                print('%s用户已经存在' %addUser)
            else:
                addPasswd = input('密码: ')
                users.append(addUser)
                passwds.append(addPasswd)
                print('%s用户添加成功' %addUser)

        elif choice == '2':
            print('删除会员信息'.center(50,'*'))
            delUser = input('删除会员名: ')
            delIndex = users.index(delUser)
            users.remove(delUser)
            passwds.pop(delIndex)
            print('%s会员删除成功' %delUser)

        elif choice == '3':
            print('查看会员信息'.center(50, '*'))
            print('\t用户名\t密码')
            userCount = len(users)
            for i in range(userCount):
                print('\t%s\t%s' %(users[i],passwds[i]))

        elif choice == '4':
            exit()
        else:
            print('请输入正确选择!')
else:
    print('管理员登录失败...')