zoukankan      html  css  js  c++  java
  • python入门-数据类型

    #一、列表和列表操作
    stus = ["张柏芝","朱一龙","王凯"] #一维数组
    stus2 = [1,2,3,4, ['a','b','c','d'] ] #2维数组
    stus3 = [1,2,3,4,['a','b','c','d',['test','dev','pre']]] #三维数组
    list = [] #空列表
    list = list() #空列表
    #取值
    print(stus3[4][4][1]) #test

    #增
    msg = '杨紫'
    stus = ["张柏芝","朱一龙","王凯"]
    stus.append(msg) #在list的末尾增加一个元素
    stus.insert(1,msg) #从指定位置插入元素,这个1代表下标
    #如果指定的下标不存在,那么会把元素插入到最后

    #查
    msg = '杨紫'
    stus = ["张柏芝","朱一龙","王凯"]
    print('单个取',stus[0]) #h获取第一个元素
    print('最后一个元素',stus[-1]) #-1代表最后一个元素
    #查询可以通过for循环遍历
    # for 循环遍历字符串
    # for 变量 in 可迭代对象
    # 循环体
    #
    stus = ['chengweiliang','chenqi','guoliwen']
    for stu in stus:#for循环直接循环一个list,就是取list里面的每一个元素
    print('每次循环取的值',stu)
    username = 'szz-'+stu
    print(username)

    #改
    stus = ["张柏芝","朱一龙","王凯"]
    stus[4] = 'baby' #修改指定位置的值
    print('改之后的',stus)
    #

    #删
    stus = ["张柏芝","朱一龙","王凯"]
    stus.remove('王凯') #删除指定的值,如果list里面有多个一样的元素,那么就只会删掉一个
    del stus[0] #删除指定位置的值
    stus.pop() #不传入下标的话,删除最后一个值
    stus.pop(2) #传入下标删除指定位置的值
    stus.clear() #python3清空列表

    #其他常用方法
    stus = ["张柏芝","朱一龙","王凯"]
    print(stus.count('王凯')) #某个元素在list里面的数量
    new_stus = stus.copy()#复制一个
    print(new_stus)
    stus.reverse() #反转数组,会改变原数组的值
    nums = [9,23,12,234,23,5235,235,235,23523,523]
    print(stus.sort()) #排序,从小到大排序,根据ASCII来排序
    print(stus.sort(reverse=True)#排序,从大到小排序
    stus.extend(nums) #扩展列表,也就是把nums的值加到stus里面
    print(stus.index('王凯')) #找某个元素的下标

    #range
    range() 可迭代对象
    range(参数) [0, 参数)
    range(参数1,参数2) [参数1, 参数2)
    range(参数1,参数2,step) [参数1,参数2) 每隔step取一个
    #
    # # 重点
    for i in range(len(lst)):
    i 索引
    lst[i] 元素
      print(i, lst[i])

    stus = ['zhangbaizhi','zhiyilong','wangkai']
    for i in range(len(stus)): #b
    username = stus[i]
    print(username)

    l = list(range(3))
    print(l) #[0, 1, 2]

    stus = ['zhangbaizhi','zhiyilong','wangkai']
    username=''
    #sql='insert into user (username,password) value ("%s","%s");'%(username,password)
    password='123456'
    index = 0
    while index<len(stus):
    username = stus[index]
    username = 'szz-'+username
    sql='insert into user (username,password) value ("%s","%s");'%(username,password)
    print(sql)
    index+=1

    #切片
    names = ['andashu', 'cc', 'niuniu', 'amy', 'lily']
    print(names[1:4]) #取下标1至下标4之间的值,包括1,不包括4,顾头不顾尾,['cc', 'niuniu', 'amy']
    print(names[1:-1]) # 取下标1至末尾,不包括-1(末尾)['cc', 'niuniu', 'amy']
    print(names[0:3]) # 从0取到3,不包括3,['andashu', 'cc', 'niuniu']
    print(names[:3]) # 取下标0至3的值,不包括3,和上一条效果一样,0可以省略不写,['andashu', 'cc', 'niuniu']
    print(names[2:]) # 取从第二个下标开始的后面所有元素,['niuniu', 'amy', 'lily']
    # # 下面是加步长的
    nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    print(nums[::2]) # 这个代表取所有的元素,然后每个2个元素取一个,# 执行结果>>> 1,3,5,7,9
    print(nums[1:8:3]) # 代表取第二个元素开始,到第8个元素,隔3个取一次,执行结果2,5,8
    print(nums[5:1:-1]) #倒序取,[6,5,4,3]

    #二、字典
    #字典以key:value形式存储,{}表示,是无序的
    stu_info =
    {
    'username':'qx',
    'password':'123456',
    'money':20,
    'addr':'上海'
    }

    #字典的key是唯一的。相同key会覆盖前面的
    #字典的增删改查
    d1 = {} #创建空字典
    d2 = dict() #创建空字典
    # #增:
    d1['name'] = '胖妞'#没有就新增,有就修改
    d1['age'] = 18
    d1.setdefault('class','双子座')
    print('之前的',d1) #之前的 {'name': '胖妞', 'age': 18, 'class': '双子座'}

    d1.setdefault('age',30) #如果使用setdefault,key已经存在了,就不会修改原来key的值
    print('之后的',d1) #不会修改age的值 之后的 {'name': '胖妞', 'age': 18, 'class': '双子座'}
    d1['name'] = '胖妞2' #没有就新增,有就修改
    print('之后的2',d1) #{'name': '胖妞2', 'age': 18, 'class': '双子座'}

    #改:
    d1['name'] = '胖妞3'

    #删除:
    d1.pop('name')#标准的删除方法,若key不存在报错
    del d1['name']#使用del方法删除,若key不存在报错
    d1.popitem() #随机删除一个值
    d1.clear() #清空

    #查询:
    id.get('name')#获取name的信息,这种方式如果key不存在的话,会返回None
    id['name']#获取name的信息,这种方式如果key不存在的话,会报错
    'name' in id #判断name是否在这个字典中,返回True或者False

    #内置方法:
    dic = {'stu1':'cc','stu2':'andashu','stu3':'niuniu'}
    print(dic.values())#打印所有value,执行结果['andashu', 'niuniu', 'cc']
    print(dic.keys())#打印所有的key,执行结果['stu2', 'stu3', 'stu1']
    print(dic.setdefault('stu1','fengluo'))#如果这个key存在的话,那就不动它,不存在的话,添加一个,cc
    dic2 = {'stu1':'sriba','stu10':'baidu'}
    dic.update(dic2)#更新字典值,将字典dic2加入到字典dic如果key存在的话,就更新,不存在的话就添加
    print(dic.items())#字典转换成一个list,拿到所有的键值对,
    # 执行结果[('stu2', 'andashu'), ('stu3', 'niuniu'), ('stu1', 'sriba'), ('stu10', 'baidu')]

    #循环字典
    users = {
    "niuhanyang":'123456sdf',
    "niuhanyang2":'123456sd',
    "niuhanyang3":'123456sdf',
    "niuhanyang4":'1234sdf56',
    "niuhanyang5":'12345gsdfs6',
    "niuhanyang6":'1234324g56'
    }
    #把字典里面每个用户的密码,前面都加上 username_ +
    #1、循环这个字典
    #2、把value修改成value = key_+value
    for k in users: #直接循环一个字典的话,循环的是key
    value = users[k] #通过key取到value
    users[k] = '%s_%s'%(k,value)
    print(users)

    for k,v in users.items():
    print('%s===>%s'%(k,v))
    users[k] = '%s_%s' % (k,v)
    print(users[k])

    stus = [
    {"name":"小白","age":18,'addr':"北京"},
    {"name":"小黑","age":28,'addr':"上海"},
    {"name":"小hong","age":28,'addr':"上海"},
    {"name":"小zi","age":28,'addr':"上海"},
    {"name":"小lv","age":28,'addr':"上海"},
    {"name":"小5","age":28,'addr':"上海"}
    ]

    for stu in stus:
    stu['phone'] = '159111111'
    print(stus)

    stus = {
    "胖妞":
    {
    "house": ['三环', "四环", "七环"],
    "car": {
    "日本": ["雷克萨斯", "英菲尼迪"],
    "中国": ['五菱宏光', '红旗', '比亚迪', "宝骏"],
    "美国": ["福特", "凯迪拉克"]
    },
    "化妆品": {
    "SK-2": 1000,
    "YSL": 8000
    }
    },
    "陆明":{
    "money":[1000,5000,8000,800000],
    "xifu":{
    "越南":2,
    "伊拉克":10,
    "韩国":2,
    "泰国":3
    }

    }
    }
    #1、统计胖妞总共有多好辆车
    cars = stus["胖妞"]["car"]
    # print (cars)
    carcount = 0
    for car in cars.values():
    # print(car)
    # print(len(car))
    carcount += len(car)
    print("胖妞共有%s辆车!" %carcount)
    # #2、胖妞又买了,德国车2辆,奥迪、奔驰
    stus["胖妞"]["car"].update({"德国":["奥迪",'奔驰']})
    print(stus)
    # #3、胖妞的化妆品全被男朋友扔了
    stus["胖妞"].pop("化妆品")
    print(stus)

    #三、元组
    #元组与列表不同的是,元组的值不能改变,可以查询,迭代for循环
    mysql_coon = ('192.168.1.109','root','123456',3306,'my_db')#定义元组,定义好后不可修改,修改会报错
    # #元组只有两个方法index和count
    print(mysql_coon[0])
    print(mysql_coon.count('root'))
    print(mysql_coon.index("root"))
    # #元组只有一个元素时,要加","
    tu = (1,)

    #四、字符串和字符串操作
    str = ' ca th y '
    #字符串去除空格方法
    print(str.strip()) #默认去掉两边的空格和换行
    print(str.lstrip()) #默认去掉左边的空格和换行
    print(str.rstrip()) #默认去掉右边的空格和换行
    #去除字符串全部空格
    #1、使用replace
    # replace主要用于字符串的替换replace(old, new, count)
    print(str.replace(' ',''))
    #2、使用join+split
    # join为字符字符串合成传入一个字符串列表,split用于字符串分割可以按规则进行分割
    str = ''.join(str.split())
    # str.split() #字符串按空格分割成列表
    ''.join(str.split()) #使用一个空字符串合成列表内容生成新的字符串
    print(str)
    #3、使用正则表达式
    import re
    str = re.sub(r"s+","",str,flags=re.UNICODE)
    print(str)

    print(str.index('d')) #查找字符串的索引,找不到报错
    print(str.find('d')) #查找字符串的索引,找不到返回-1

    str = 'cathy'
    print(str.capitalize()) #首字母大写
    print(str.lower())#全部变成小写
    print(str.upper())#全部变成大写
    print(str.replace('c','C',1))#替换字符串

    print('abc.jpg'.endswith('.jpg'))#判断是否以XX结尾,返回True,False
    print('abc'.startswith('c')) #判断是否以XX开头,返回True,False

    print("欢迎登陆".center(100,'*')) #把欢迎登陆放中间,前后补*达到100个字符
    print(str.zfill(40)) #指定长度的字符串,原字符串右对齐,前面填充0
    print(str.expandtabs(30))#补当前字符串中 的次数

    username = 'cathy'
    today = '2019-04-02'
    str2 = '欢迎{}登陆,今天的日期是{}.'
    print(str2.format(username,today))#格式字符串

    str3 = '欢迎{username}登陆,今天的日期是{today}.'
    print(str3.format(username = 'cathy',today = '20190403'))
    print(str3.format_map({'username':'cathy','today':'20190403'})) #格式字符串字典类型

    print(' '.isspace()) #判断是否为空格

    print('123abc'.isalnum())#是否包含数字和字母,没有%%##@特殊字符串就返回true
    print('abc'.isalpha())#是否是英文字母,不是数字、不是特殊符号就返回true
    print('122'.isdigit())#是否是数字
    print('aa'.isidentifier())#是否是一个合法的变量名
    print('aa'.islower())#是否是小写字母
    print('AA'.isupper())#是否是大写字母
    print('Loadrunner Book'.istitle())#是不是一个标题,判断首字符是否是大写
    print('+'.join(['hehe','haha','ee']))#拼接字符串,hehe+haha+ee


    ###maketrans() 方法用于给 translate() 方法创建字符映射转换表
    ##python3.4以后不需要从外部string模块来调用maketrans()方法,用内建函数bytearray.maketrans()、bytes.maketrans()、str.maketrans()。
    ##python3中:
    ##p = str.maketrans('abcdefg','1234567')#前面的字符串和后面的字符串做映射
    ##第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串,表示转换的目标。两个字符串的长度必须相同,为一一对应的关系
    ##print('cc ae gg'.translate(p))##输出按照上面maketrans做映射后的字符串

    ##python2中:
    import string
    p = string.maketrans('abcdefg','1234567')
    print('cc ae gg'.translate(p))#结果为33 15 77

    print('mysql is is db'.rfind('is'))#返回最右边字符的下标
    print('1+2+3+4'.split('+'))#切割字符串,返回一个list
    print('1+2+3 1+2+3+4'.splitlines())#按照换行符分割
    print('Abcdef'.swapcase())#大小写反转

    s="""
    寂寞当然有一点

    你不在我身边

    总是特别想念你的脸

    距离是一份考卷

    测量相爱的誓言

    最后会不会实现

    我们为爱还在学

    学沟通的语言

    学着谅解

    学着不流泪

    等到我们学会飞

    飞越黑夜和考验

    日子就要从孤单里毕业

    我们用多一点点的辛苦

    来交换多一点点的幸福

    就算幸福

    还有一段路

    等我们学会忍耐和付出

    这爱情一定会有张证书

    证明

    从此不孤独

    从此不孤独

    """

    # 字符串是不能被修改的

    file_name = input('请上传文件,文件只能是zip压缩包')
    if file_name.endswith('.zip'):
    print('没问题')
    else:
    print('文件格式错误!')


    # 三元运算符
    # 三元运算就是在赋值变量的时候,可以直接给它加上判断后,再赋值
    # 用法:res = 值1 if 条件 else 值2
    a = 5
    b = 4
    c = a if a>b else b #如果a>b ,c=a,否则c=b,不用三元运算,则如下面的写法

    if a > b:
    c = a
    else:
    c= b

    #三元运算符用于列表和字典
    nums = [1,2,3,4,5,6,7,8,9,10]
    #old_num = [num for num in nums if num%2!=0]
    #循环num,如果nums里面的值,不能被2整除的话,就写到old_num 列表中。等于下面的写法:

    old_num = []
    for num in nums:
    if num % 2 !=0:
    old_num.append(num)
  • 相关阅读:
    vue-指令
    VueMusic-14搜索实现
    VueMusic-13歌手列表
    VueMusic-12歌词滚动
    VueMusic-11播放-歌词适配
    VueMusic-10.播放-歌词加载
    VueMusic-9.播放-播放功能
    VueMusic-8更多-下拉刷新
    VueMusic-7更多-数据适配
    VueMusic-6首页-热门榜单
  • 原文地址:https://www.cnblogs.com/qx21007874/p/10653959.html
Copyright © 2011-2022 走看看