• python 全栈开发,Day2(基础数据类型)


    一、数据

    1 什么是数据?

      x=10,10是我们要存储的数据

    2 为何数据要分不同的类型

      数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示

    3 数据类型

      数字

      字符串

      列表

      元组

      字典

      集合

    二、数据类型

    数字int

    数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:

    #bit_length() 当十进制用二进制表示时,最少使用的位数
    v = 11
    data = v.bit_length()
    print(data)


    布尔值bool

    布尔值就两种:True,False。就是反应条件的正确与否。

    真 1 True。

    假 0 False。

    字符串str

    用 " " 、' ' 、''' '''或者""" """。中间包含的部分称之为字符串

        PS:即使里面写入的是数字,那么他的数据类型也是字符串

    1、字符串的索引与切片。

    索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。

    a = 'ABCDEFGHIJK'
    print(a[0])
    print(a[3])
    print(a[5])
    print(a[7])

    执行输出

    A
    D
    F
    H

    切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)。

    a = 'ABCDEFGHIJK'
    print(a[0:3])
    print(a[2:5])
    print(a[0:]) #默认到最后
    print(a[0:-1]) #-1就是最后一个
    print(a[0:5:2]) #加步长
    print(a[5:0:-2]) #反向加步长

    执行输出

    ABC
    CDE
    ABCDEFGHIJK
    ABCDEFGHIJ
    ACE
    FDB


    2、字符串常用方法。

    #captalize,swapcase,title
    name = "ximenchunxue"
    print(name.capitalize()) #首字母大写
    print(name.swapcase()) #大小写翻转
    msg='egon say hi'
    print(msg.title()) #每个单词的首字母大写

    执行输出

    Ximenchunxue
    XIMENCHUNXUE
    Egon Say Hi

    # 内容居中,总长度,空白处填充
    name = "ximenchunxue"
    ret2 = name.center(20,"*")
    print(ret2)

    执行输出

    ****ximenchunxue****

    #数字符串中的元素出现的个数。
    name = "ximenchunxue"
    print(name[0:10])
    ret3 = name.count("n",0,10) # 可切片
    print(ret3)

    执行输出

    ximenchunx
    2

    解释:

    0,10表示从左至右取出10个字符串,那么结果为ximenchunx,字母n在里面出现了2次

    a2 = "hqw	1"
    '''
    expandtabs() 方法把字符串中的 tab 符号('	')转为空格,tab 符号('	')默认的空格数是 8。
    默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,
    如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。
    '''
    ret4 = a2.expandtabs()
    print(ret4)
    

    执行输出

    hqw     1

    a4 = "dkfjdkfasf54"
    #startswith 判断是否以...开头
    #endswith 判断是否以...结尾
    ret4 = a4.endswith('jdk',3,6) # 顾头不顾尾
    print(ret4) # 返回的是布尔值
    ret5 = a4.startswith("kfj",1,4)
    print(ret5)

    执行输出

    True
    True

    #寻找字符串中的元素是否存在
    a4 = "dkfjdkfasf54"
    ret6 = a4.find("fjdk",1,6)
    print(ret6) # 返回的找到的元素的索引,如果找不到返回-1

    执行输出

    2

    a4 = "dkfjdkfasf54"
    ret61 = a4.index("fjdk",4,6)
    print(ret61) # 返回的找到的元素的索引,找不到报错。

    执行输出以下结果,报错了

    Traceback (most recent call last):
    File "E:/python_script/day1/test.py", line 3, in <module>
    ret61 = a4.index("fjdk",4,6)
    ValueError: substring not found

    #split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。
    ret9 = 'title,Tilte,atre,'.split('t')
    print(ret9)
    ret91 = 'title,Tilte,atre,'.rsplit('t',1)
    print(ret91)

    执行输出

    ['', 'i', 'le,Til', 'e,a', 're,']
    ['title,Tilte,a', 're,']

    #format的三种玩法 格式化输出
    res='{} {} {}'.format('egon',18,'male')
    print(res)
    res='{1} {0} {1}'.format('egon',18,'male')
    print(res)
    res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
    print(res)

    执行输出

    egon 18 male
    18 egon 18
    egon 18 male

    #strip
    name='*egon**'
    print(name.strip('*'))
    print(name.lstrip('*'))
    print(name.rstrip('*'))

    执行输出

    egon
    egon**
    *egon

    #replace
    name='alex say :i have one tesla,my name is alex'
    print(name.replace('alex','SB',1))

    执行输出

    SB say :i have one tesla,my name is alex

    #####is系列
    name='jinxin123'
    print(name.isalnum()) #字符串由字母或数字组成
    print(name.isalpha()) #字符串只由字母组成
    print(name.isdigit()) #字符串只由数字组成

    执行输出

    True
    False
    False


    元祖tupe

    元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")

    列表list
    列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

    li = ['alex',123,True,(1,2,3,'wusir'),[1,2,3,'小明',],{'name':'alex'}]

    列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

    li = [1,'a','b',2,3,'a']
    li.insert(0,55) #按照索引去增加
    print(li)
     
    li.append('aaa') #增加到最后
    li.append([1,2,3]) #增加到最后
    print(li)
     
    li.extend(['q,a,w']) #迭代的去增
    li.extend(['q,a,w','aaa'])
    li.extend('a')
    li.extend('abc')
    li.extend('a,b,c')
    print(li)

    执行输出

    [55, 1, 'a', 'b', 2, 3, 'a']
    [55, 1, 'a', 'b', 2, 3, 'a', 'aaa', [1, 2, 3]]
    [55, 1, 'a', 'b', 2, 3, 'a', 'aaa', [1, 2, 3], 'q,a,w', 'q,a,w', 'aaa', 'a', 'a', 'b', 'c', 'a', ',', 'b', ',', 'c']

    li = [1,'a','b',2,3,'a']
    l1 = li.pop(1) #按照位置去删除,有返回值
    print(l1)
     
    del li[1:3] #按照位置去删除,也可切片删除没有返回值。
    print(li)
     
    li.remove('a') #按照元素去删除
    print(li)
     
    li.clear() #清空列表

    执行输出

    a
    [1, 3, 'a']
    [1, 3]

    li = [1,'a','b',2,3,'a']
    li[1] = 'dfasdfas'
    print(li)
    li[1:3] = ['a','b']
    print(li)

    执行输出

    [1, 'dfasdfas', 'b', 2, 3, 'a']
    [1, 'a', 'b', 2, 3, 'a']

    切片去查,或者循环去查。

    其他操作

    count(数)(方法统计某个元素在列表中出现的次数)。

    a = ["q","w","q","r","t","y"]
    print(a.count("q"))

    执行输出

    2


    index(方法用于从列表中找出某个值第一个匹配项的索引位置)

    a = ["q","w","r","t","y"]
    print(a.index("r"))

    执行输出

    2


    sort (方法用于在原位置对列表进行排序)。

    reverse (方法将列表中的元素反向存放)。

    a = [2,1,3,4,5]
    a.sort()# 他没有返回值,所以只能打印a
    print(a)
    a.reverse()#他也没有返回值,所以只能打印a
    print(a)

    执行输出

    [1, 2, 3, 4, 5]
    [5, 4, 3, 2, 1]


    字典dict
    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

    字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

    dic = {'zhang':'k'}
    dic['li'] = ["a","b","c"]
    print(dic)
    #setdefault 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。
    dic.setdefault('k','v')
    print(dic)  # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
    dic.setdefault('k','v1')  # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
    print(dic)

    执行输出

    {'li': ['a', 'b', 'c'], 'zhang': 'k'}
    {'k': 'v', 'li': ['a', 'b', 'c'], 'zhang': 'k'}
    {'k': 'v', 'li': ['a', 'b', 'c'], 'zhang': 'k'}

    dic = {'name':'zhang','age':23}
    dic_pop = dic.pop("a",'无key默认返回值') # pop根据key删除键值对,并返回对应的值,如果没有key则返回默认返回值
    print(dic_pop)
    del dic["name"]  # 没有返回值。
    print(dic)
     
    dic_pop1 = dic.popitem()  # 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回
    print(dic_pop1)  # ('name','jin')
     
    dic_clear = dic.clear()  # 清空字典
    print(dic,dic_clear)  # {} None

    执行输出

    无key默认返回值
    {'age': 23}
    ('age', 23)
    {} None

    dic = {"name":"jin","age":18,"sex":"male"}
    dic2 = {"name":"alex","weight":75}
    dic2.update(dic)  # 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中
    print(dic2)

    执行输出

    {'age': 18, 'name': 'jin', 'weight': 75, 'sex': 'male'}

    dic = {"name":"jin","age":18,"sex":"male"}
    value1 = dic["name"]  # 没有会报错
    print(value1)
     
    value2 = dic.get("djffdsafg","默认返回值")  # 没有可以返回设定的返回值
    print(value2)

    执行输出

    jin
    默认返回值

    其他操作

    dic = {"name":"jin","age":18,"sex":"male"}
    item = dic.items()
    print(item,type(item))  # dict_items([('name', 'jin'), ('sex', 'male'), ('age', 18)]) <class 'dict_items'>
    #这个类型就是dict_items类型,可迭代的
     
    keys = dic.keys()
    print(keys,type(keys))  # dict_keys(['sex', 'age', 'name']) <class 'dict_keys'>
     
    values = dic.values()
    print(values,type(values))  # dict_values(['male', 18, 'jin']) <class 'dict_values'> 同上

    执行输出

    dict_items([('sex', 'male'), ('age', 18), ('name', 'jin')]) <class 'dict_items'>
    dict_keys(['sex', 'age', 'name']) <class 'dict_keys'>
    dict_values(['male', 18, 'jin']) <class 'dict_values'>

    字典的循环

    dic = {"name":"jin","age":18,"sex":"male"}
    for key in dic:
        print(key)
    for item in dic.items():
        print(item)
    for key,value in dic.items():
        print(key,value)

    执行输出

    age
    sex
    name
    ('age', 18)
    ('sex', 'male')
    ('name', 'jin')
    age 18
    sex male
    name jin

    三,其他(for,enumerate,range)
    for循环:用户按照顺序循环可迭代对象的内容。

    msg = '我是最好的'
    for item in msg:
        print(item)
     
    li = ['alex','银角','女神','egon','太白']
    for i in li:
        print(i)
     
    dic = {'name':'太白','age':18,'sex':'man'}
    for k,v in dic.items():
        print(k,v)

    执行输出:






    alex
    银角
    女神
    egon
    太白
    name 太白
    age 18
    sex man

    enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。

    li = ['alex','银角','女神','egon','太白']
    for i in enumerate(li):
        print(i)
    for index,name in enumerate(li,1):
        print(index,name)
    for index, name in enumerate(li, 100):  # 起始位置默认是0,可更改
        print(index, name)

    执行输出:

    (0, 'alex')
    (1, '银角')
    (2, '女神')
    (3, 'egon')
    (4, '太白')
    1 alex
    2 银角
    3 女神
    4 egon
    5 太白
    100 alex
    101 银角
    102 女神
    103 egon
    104 太白

    range:指定范围,生成指定数字

    for i in range(1,10):
        print(i)
    print('======')
    for i in range(1,10,2):  # 步长
        print(i)
    print('++++++')
    for i in range(10,1,-2): # 反向步长
        print(i)

    执行输出

    1
    2
    3
    4
    5
    6
    7
    8
    9
    ======
    1
    3
    5
    7
    9
    ++++++
    10
    8
    6
    4
    2

  • 相关阅读:
    [洛谷P1155] 双栈排序
    [洛谷P4315] 月下”毛景“树
    [洛谷P2486] [SDOI2011]染色
    [HNOI2010] 弾飞绵羊
    mysql注入总结
    cisco交换机实现端口聚合
    python为运维人员打造一个监控脚本
    复习ACCESS注入
    利用sfc文件构建网络渗透
    FTP站点设置
  • 原文地址:https://www.cnblogs.com/tu240302975/p/12640886.html
Copyright © 2020-2023  润新知