1、列表(list)

     python中最常见的一种数据类型,用"[]"中括号将元素括起来,逗号分开,列表中的元素是可以进行增删查改等一系列操作的。

# int float str list
s = '王月、张娜、宋雪艳、刘姐、王何、程月香'
#     1    2     3     4    5     6
# 定义列表
stus = ['王月', '张娜', '宋雪艳', '刘姐', '王何', '程月香']  # 下标、角标、索引
#         0       1       2       3      4        5
stu2 = []  # 定义一个空的列表
# 1、新增
stus.append('唐玉亮')  # 把元素加到列表的最后
stus.insert(1, '徐静')  # 指定位置加入
print(stus)
# 2、修改
stus[0] = '王小月'
print(stus)
# 3、删除
stus.pop()  # 默认删除组后一个元素
stus.pop(0)  # 删除指定的下标的元素
stus.remove('王何')  # 指定元素,删不存在元素报错
del stus[3]  # 也可删除
stus.clear()  # 清空列表
print(stus)
# 4、取值(根据下标取)
print(stus)
print(stus[0])
print(stus[3])

# 其他的方法
l2 = [1, 54, 77, 2, 3, 15, 1]
l2.reverse()
print(l2)
print(l2.count(1))  # 统计元素出现的次数
print(l2.index(77))  # 找指定元素的索引,不存在报错
l2.sort()  # 对list进行排序,默认是升序排序
l2.sort(reverse=True)  # 降序,不能直接print
print(l2)
l3 = l2.copy()  # 复制一个list
l2.extend(stus)  # 合并两个list
print(l2)

 (1)list练习

import datetime

today = datetime.datetime.today()
usernames = ['xiaohei', 'xiaobai', 'xiaoming']
passwords = ['123456', '11111', '1']
# 登录
# username = input('username:')
# password = input('password:')
# 欢迎 xxx登录,今天的是时间是xxx。
# 登录错误次数过多,最多登录3次
# 需求分析:
# 1、循环3次
# 2、输入账号和密码
# 3、判断账号是否存在 in count
# 4、根据账号取到账号的下标,然后用下标取到密码
# 5、判断账号/密码是否正确

for i in range(3):
    username = input('username:')
    if usernames.count(username) > 0:
        index = usernames.index(username)
        password = passwords[index]
        pwd = input('password:')
        if password == pwd:
            print('欢迎%s登陆,时间是%s' % (username, today))
            break
        else:
            print('密码错误')
    else:
        print('账号不存在')
else:
    print('失败次数过多')

运行结果:

username:xiaohei
password:123456
欢迎xiaohei登陆,时间是2020-08-10 22:51:02.518212

2、字典

# 字典是用来存储一对键值对的数据类型,使用大括号括起来,键值对中间使用冒号分割
# 字典key-value,字典是无序的
# list取值,得挨个找,速度慢
# 字典取值,是直接根据key来查找,速度快
# 一维数组
names = ['name1', 'name2']
phone = ['1111', '1111']
addr = ['xxxx', 'xxxxx']
# 二维数组
infos = [
    ['name1', '1111', 'beijing'],
    ['name2', '2222', 'shanghai'],
    ['ccx', '33333', 'guangzhou']
]
# 数组取值
print(infos[-1][0])  # list下标为-1,代表取最后一个元素,运行结果:ccx

# 字典是用来存储一对键值对的数据类型,使用大括号括起来,键值对中间使用冒号分割
# 字典key-value,字典是无序的
# list取值,得挨个找,速度慢
# 字典取值,是直接根据key来查找,速度快

stu_info1 = {}  #定义一个空的字典

stu_info = {
    'name': 'ccc',
    'phone': '11111111',
    'addr': 'bj'
}
print(stu_info)
# 增加
stu_info['age'] = 18    #如果key值已存在,则修改
stu_info.setdefault('qq', '602647962')    #如果key值已存在,则保持原样
stu_info['name'] = 'nnn'
stu_info.setdefault('name', 'nnn')
#如果key值不存在,两者没有区别
print(stu_info)
# 修改
stu_info['name'] = 'nnn'  # 修改
print(stu_info)
# 删除
stu_info.pop('age')    #删除不存在的key值,会报KeyError
del stu_info['name']
print(stu_info)

# 取值
print(stu_info.get('phone'))   #取不存在的key值,返回None
print(stu_info['qq'])   #取不存在的key值,报KeyError
print(stu_info.get('sex', ''))  #get不到key值,会返回默认值,如果get到值,则默认值不起作用
print(stu_info)

new_stu_info = stu_info.copy()   #拷贝到别的字典
stu_info.clear()   #清空字典
print(stu_info.keys())   # 所有的key
print(stu_info.values())  # {s1:100,s2:200,s3:300} 所有value
print(stu_info.items())   #把字典变成了一个二维数组

stu_info.update(name='xh', money=5000)   #可以修改字段值,也可以新增key-value
print(stu_info)

3、list、字典用len取长度

usernames = ['xiaohei', 'xiaobai', 'xiaoming']
passwords = ['123456', '11111', '1']
print(len(usernames))
d = {'name': 1, 'ses': 0}
print(len(d))

运行结果:

3
2

4、list转换成字典

usernames = ['xiaohei', 'xiaobai', 'xiaoming']
passwords = ['123456', '11111', '1']
d = {}  #定义一个空得字典
i = 0
while i < len(usernames):  # 0<3,计算下标得方式
    username = usernames[i]
    password = passwords[i]
    d[username] = password
    i += 1
print(d)

运行结果:

{'xiaohei': '123456', 'xiaobai': '11111', 'xiaoming': '1'}

5、list和字典都是可以循环的

for i in range(5):  # for循环会产生一个list,如:[0,1,2,3,4]
    print(i)

d = {'xiaohei': '123456', 'xiaobai': '11111', 'xiaoming': '1'}
for a in d:  # 直接循环字典得key
    print(a)

运行结果:

0
1
2
3
4
xiaohei
xiaobai
xiaoming

6、取字典的key和value的两种方式

# 取字典的key和value的两种方式
d = {'xiaohei': '123456', 'xiaobai': '11111', 'xiaoming': '1'}
# 第一种:
for key in d:   # 循环字典得key
    value = d.get(key)   # 根据key取value,推荐使用
    print('%s->%s' % (key, value))
# 第二种:
for key, value in d.items():  # 效率不高,因为d.items()先把一个字典转成了一个list
    print('%s->%s' % (key, value))

运行结果:

xiaohei->123456 
xiaobai->11111
xiaoming->1

小例子(二维数组):

#二维数组取值
l = [
    ['xiaohei', '123456'],
    ['xiaobai', '11111'],
    ['xiaoming', '1']
]
for i, j in l:  # for后面得变量名就是list里得元素
    print(i, j)

运行结果:

xiaohei 123456
xiaobai 11111
xiaoming 1
posted on 2020-04-28 18:04  彩彩常  阅读(172)  评论(0编辑  收藏  举报