zoukankan      html  css  js  c++  java
  • 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
    ')#
    是换行符
    16 f.write('bcd,123
    ')
    17 f.write('bcd3,123
    ')
    18 f.close()
  • 相关阅读:
    【STL】各容器成员对比表
    C/C++ 笔试、面试题目大汇总2
    运维
    Docker_基础运用
    IntelliJ_idea_Ultimate_2018.1_windows
    python_IED工具下载(pycharm)_windows版
    排序_归并排序_递归
    递归_汉诺塔问题
    递归_变位字
    递归_三角数字和阶乘
  • 原文地址:https://www.cnblogs.com/yanyan-/p/10654924.html
Copyright © 2011-2022 走看看