python学习笔记(二)-列表、字典、字符串

1、列表

列表的增删改查操作

 1 # 列表:
 2 stus = ["王一","赵二","张三"] #定义一个列表
 3 print(stus)
 4 
 5 # 增加
 6 stus.append("李四")  #在list的末尾增加一个元素
 7 stus.insert(0,"周五")   #在指定的位置插入元素,如果指定下标不存在,会把元素插入到最后
 8 print(stus)
 9 
10 #
11 print('最前面一个元素',stus[0])
12 print('最后一个元素',stus[-1])
13 
14 #
15 stus[-1] = "马六"  #修改元素内容
16 print(stus)
17 
18 # 删除
19 stus.pop(3)#删除指定下标的元素
20 stus.pop()#默认删除最后一个元素
21 del stus[2] #删除指定位置的元素
22 stus.remove("周五")  #删除指定的元素
23 #1、list里面有多个一样的元素,只会删掉第一个
24 # 2、不存在的元素,会报错
25 
26 #其他方法
27 count = stus.count("周五") #某个元素在list里面出现的次数
28 stus.clear() #清空list
29 new_stus = stus.copy() #复制list
30 print(new_stus)
31 
32 stus.reverse()  #反转list
33 print(stus)
34 stus.sort()  #list排序升序
35 stus.sort(reverse=True)  #降序
36 print(stus)
37 
38 nums = ["aa","bb","cc","dd"]
39 stus.extend(nums) #加入一个list
40 print(stus)
41 reut = stus.index("aa") #找某个元素的下标
42 print("aa的下标",reut)
43 
44 if 'aa' in stus:  #判断元素在list里面
45     print(stus)
46 if 'aa' not in stus:  #判断元素不在list里面
47     print(stus)

li = ['a','v','c']

for index,i in enumerate(li,1):#index是下标,后面的参数是下标从几开始
print(index,i)

2、列表小练习

 1 # 列表小练习
 2 #1、输入账号密码,最多输入三次
 3 #2、校验输入是否为空
 4 #3、校验用户是否存在  list.count()
 5 #4、校验密码是否正确  从username里面找到user的下标,到passwd中取对应的密码,list.index
 6 #5、登陆成功打印
 7 
 8 import datetime
 9 today = datetime.datetime.today()
10 
11 usernames = ["yanyan","mimi","guoguo","xiaomao"]
12 passwds = ["123456","abc1230","654321","789012"]
13 
14 for i in range(3):
15     username = input("usernaem: ").strip()
16     passwd = input("password: ").strip()
17     if username == '' or passwd == '':
18         print("账号密码不能为空")
19     elif username not in usernames:
20         print("用户名不存在")
21     else:
22         user_index = usernames.index(username)
23         pwd = passwds[user_index]
24         if passwd == pwd:
25             print("欢迎【%s】登陆,今天的日期是%s."%(username,today))
26             break
27         else:
28             print("密码错误")
29 else:
30     print("错误次数用完")

3、多维数组

1 #用列表定义一个二维数组
2 stus = [
3             ['mimi1','123','1111','sewweew',20],
4             ['mimi2','123','1111','sewweew',200],
5             ['mimi3','123','1111','sewweew',2000],
6             ['mimi4','123','1111','sewweew',2000],
7 ]
8 print(stus[3][4])#打印多维数组的元素

 

#创建一个二维数组的方法是:
m = [[0]*5 for i in range(3)]    #创建一个3行5列的二维数组

 

4、字典

 1 #用户名 密码 电话 住址
 2 #用列表定义一个二维数组
 3 stus = [
 4             ['mimi1','123','1111','sewweew',20],
 5             ['mimi2','123','1111','sewweew',200],
 6             ['mimi3','123','1111','sewweew',2000],
 7             ['mimi4','123','1111','sewweew',2000],
 8 ]
 9 print(stus[3][4])#打印多维数组的元素
10 
11 #创建一个字典,字典都是key--value的键值对
12 stu_info = {
13     'username':'mimi',
14     'password':'123456',
15     'money':20,
16     'addr':'cd'
17 }
18 
19 d1 = {} #创建空字典
20 d2 = dict() #创建空字典
21 
22 #增加字典
23 d1['name'] = 'guoguo'
24 d1['age'] = 21
25 d1.setdefault('class','szz') #增加元素,前面是key,后面value
26 d1.setdefault('age',38) #使用setdefault方法,存在的key,value不会被改
27 d1['name'] = 'guoguo' #改变value的值
28 print(d1)
29 
30 #修改
31 d1['name'] = 'yanyan'
32 
33 #取值
34 print(d1['name']) #取key为name的值
35 print(d1['cc'])  #指定不存在的key,报错
36 print(d1.get('namess')) #指定不存在的key,返回None
37 print(d1.get('money',0)) #如果key不存在,et方法可以指定值
38 print(d1)
39 
40 print(d1.keys())
41 print(d1.values())
42 
43 #删除
44 d1.pop('name')
45 del d1['name']
46 d1.popitem() #随机删除一个key
47 d1.clear()#清空
48 d2 = {'abc':1234}
49 d1.update(d2)#把d2加到d1里
50 print(d1)
51 
52 users = {
53     "yanyan":'13475656',
54     "yanyan2":'1345ytty6',
55     "yanyan3":'134tyyt56',
56     "yanyan4":'134jgk56',
57     "yanyan5":'1345wegw6',
58     "yanyan6":'1345wegq3we6',
59     "yanyan7":'134ewgwrg56'
60 }
61 
62 #、把字典里面每个用户的密码,前面都加上 username_ +
63 
64 #1、循环这个字典
65 #2、把value修改成value = key_+value
66 #这种方法也可以取到值,不过比较麻烦
67 for k in users:#直接循环一个字典的话,循环的是key
68      value = users[k] #通过key取到value
69      users[k] = '%s_%s'%(k,value)
70 print(users)
71 
72 #使用.items方法可以直接取到key、value两个值
73 for k,v in users.items():
74     print('%s===>%s'%(k,v))
75     users[k] = '%s_%s' % (k, v)

5、字典练习

 1 users = [
 2     {
 3         "id": 2,
 4         "name": "矿泉水",
 5         "sex": "未知",
 6         "age": 38,
 7         "addr": "天通苑123",
 8         "grade": "双子座123",
 9         "phone": "12123654311",
10         "gold": 34000
11     },
12     {
13         "id": 5668,
14         "name": "矿泉水",
15         "sex": "未知",
16         "age": 38,
17         "addr": "天通苑",
18         "grade": "双子座",
19         "phone": "12123654564",
20         "gold": 3202
21     },
22     {
23         "id": 5675,
24         "name": "矿泉水",
25         "sex": "未知",
26         "age": 38,
27         "addr": "天通苑",
28         "grade": "双子座",
29         "phone": "12188888888",
30         "gold": 800
31     },
32     {
33         "id": 5714,
34         "name": "矿泉水",
35         "sex": "未知",
36         "age": 38,
37         "addr": "天通苑",
38         "grade": "双子座",
39         "phone": "12123654529",
40         "gold": 100
41     }
42 ]
43 
44 # 统计一下学生总共有多少金币
45 #     1、循环users这个list
46 #     2、从每个user的字典里面取到gold
47 #     3、把每次的gold值相加
48 #找出金币小于100的学生姓名
49 #     1、循环users这个list
50 #     2、从每个user的字典里面取到gold
51 #     3、判断金币数,小于等于100的打印出来
52 #金币大于500的学生扣除300金币,小于等于100的加上200金币
53  #     1、循环users这个list
54  #     2、从每个user的字典里面取到gold
55  #    3、小于100的加200,大于500的减300
56 
57 all_gold= 0
58 for user in users:
59     gold = user.get('gold')
60     # all_gold += gold
61     username = user.get('name')
62     if gold <= 100:
63         print("%s 的金币小于等于100."%username)
64         user['gold'] = gold + 200
65     if gold > 500:
66         user['gold'] = gold - 300
67 print(users)

 6、字典嵌套的练习

 1 stus = {
 2     "胖妞":
 3         {
 4             "house": ['三环', "四环", "七环"],
 5            "car": {
 6                 "日本": ["雷克萨斯", "英菲尼迪"],
 7                 "中国": ['五菱宏光', '红旗', '比亚迪', "宝骏"],
 8                 "美国": ["福特", "凯迪拉克"]
 9             },
10             "化妆品": {
11                 "SK-2": 1000,
12                 "YSL": 8000
13             }
14         },
15     "陆明":{
16         "money":[1000,5000,8000,800000],
17         "xifu":{
18             "越南":2,
19             "伊拉克":10,
20             "韩国":2,
21             "泰国":3
22         }
23 
24     }
25 }
26 house = stus['胖妞']['house']#返回house的值
27 print(house)
28 house.append('六环')#在house列表中增加一个元素
29 car = stus['胖妞']['car']#返回car的值
30 car['德国']=['奥迪','奔驰']#给字典car新增一个键值对
31 #统计一共有多少辆车
32 #取出字典car里面每一个key的值,使用len方法计算列表长度
33 car_count = 0
34 for c in car.values():
35     car_count += len(c)
36 print(car_count)
37 #
38 car_china = stus['胖妞']['car']['中国']#返回字典car里面key为中国的列表
39 car_china.remove("比亚迪")#删除列表里面的元素
40 car_china.append("保时捷")#增加列表元素
41 print(car)

7、字符串常用方法

 1 #字符串不会被修改,操作字符串返回新的字符串
 2 s = "  abccccccccc    "
 3 print(s)
 4 s = s.strip() #strip默认去掉首尾空格和换行符
 5 print(s.lstrip())#去掉左边的空格
 6 print(s.rstrip())#去掉右边的空格
 7 print(s)
 8 print(s.count('c'))#统计字符串出现的次数
 9 print(s.index('d'))#下标,不存在会报错
10 print(s.find('d'))#下标,不存在返回-1
11 
12 print(s.capitalize())#首字母大写
13 print(s.upper())#把字符串全部变成大写
14 print("s.lower"+s.lower())#把字符串全部变成小写
15 print(s.replace('e','d'))#替换字符串,前面参数是被替换的,后面参数是替换值
16 print(s.replace(" ",""))#去掉空格,把空格替换成空
17 print('abc.jpg'.endswith('.jpg'))#判断字符串以什么结尾,返回值True,False
18 print('abc'.startswith('a'))#判断字符串以什么开头,返回值True,False
19 
20 print("欢迎登陆".center(50,"*"))#把字符串放中间,长度为50,不足的用“*”补足
21 
22 s.isspace()#判断是否为空格
23 s.islower()#判断是否小写
24 s.isupper()#判断是否大写
25 
26 print('123abc%&^&'.isalnum())#字符串里全部为字母或者数字,有就返回False
27 print('123'.isalpha())#字符串里全部为字母返回true   
28 print('12.41'.isdigit()) #判断是否为整数
29 print('11'.zfill(5))#字符串长度不够自动补0
30 username = 'abc'
31 today = '2019-03-30'
32 s2 = '欢迎{}登陆,今天的日期是{}.'
33 print(s2.format(username,today))
34 
35 s3 = "insert into user value ({username},{password},{addr},{phone}) "
36 new_s3 = s3.format(password = '123456',username = 'yanyan',addr = 'cd',phone = '1234567')
37 print(new_s3)
38 s.format()
39 s.format_map()#传入的参数是字典
40 
41 #字符串分割
42 users = 'abc,abc,xiaohei,xiaobai,xiaoxiaobai,xiaobaibai'
43 'szz-abc',123456
44 
45 #分割字符串
46 result = users.split(',')
47 # 不填参数,默认按空格分割
48 #1、按照某个字符串分割
49 #2、分割后的元素放到一个list里面
50 #3、如果指定的字符串不存在,就把整个字符串放到list里面
51 # print(result)
52 
53 names = ['abc', 'abc', 'xiaohei', 'xiaobai', 'xiaoxiaobai', 'xiaobaibai']
54 print(','.join(names))#把list变成字符串,以指定字符连接

8、string和random库

 1 import random
 2 import string
 3 
 4 print(string.ascii_letters)#所有小写字母大写字母
 5 print(string.ascii_lowercase)#所有的小写字母
 6 print(string.ascii_uppercase)#所有的大写字母
 7 print(string.digits)#所有数字
 8 
 9 num = [1,2,3,4,5,6,7,8,9,0]
10 result = random.sample(num,4)#指定一个list,随机取四个
11 print(result)

 9、文件操作 

 1 li = ['abc', 'xiaozi', 'xiaobai', 'xiaohei', 'xiaoming', 'xiaolan']
 2 
 3 #读文件
 4 f = open('names.txt','r',encoding='utf-8')#打开一个文件,可以写绝对路径
 5 res = f.read()#使用read方法读取文件全部内容
 6 print(res)
 7 res2 = f.read()#第二次再读取时光标位置指向末尾,所以读不到数据
 8 print('res2...',res2)
 9 f.close()#文件操作完毕需要关闭文件
10 
11 #写文件
12 f = open('names.txt','w',encoding='utf-8')
13 f.write(','.join(li))#只能是写字符串
14 f.write(str(li))
15 f.write('abc,123\n')#\n是换行符
16 f.write('bcd,123\n')
17 f.write('bcd3,123\n')
18 f.close()

 

posted @ 2019-04-04 15:03  颜颜blog  阅读(353)  评论(0)    收藏  举报