zoukankan      html  css  js  c++  java
  • python基础数据类型二

    数据类型:数字、字符串、列表、元组、字典、集合

    一、数字int

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

    bit_length()将十进制转化为二进制占的位数
    二进制             十进制
    0000 0001            1
    0000 0010            2
    0000 0011            3
    0000 0100            4
    '''
    i=3
    j=4
    print(i.bit_length())#>>>2
    print(j.bit_length())#>>>3

    二、布尔值bool

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

    2 数字与字符串转化
    3 int ---> str : str(int)
    4 str ---> int : int(str) str必须全部是数字组成 
    5 布尔型与数字、字符串转化 6 int ---> bool:0 ---> False 非0 ---> True 
    7 bool---> int :int(True)---> 1 int(False)---> 0 
    8 str ---> bool:空字符串 ---> False 非空字符串---> True 
    10 print(int(True))#>>>1
    11 print(int(False))#>>>0
    12 print(bool(''))#>>>False
    13 print(bool('a'))#>>>True

    三、字符串str

    字符串的索引与切片。

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

    1 s='Hello World!'
    2 s1=s[0]#第一个元素
    3 s2=s[-1]#最后一个元素
    4 s3=s[-2]#倒数第二个元素
    5 print(s1)#>>>H
    6 print(s2)#>>>!
    7 print(s3)#>>>d

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

    s1=s[起始索引:结束索引:步长]

    1 s='Hello World!'
    2 s1=s[0:3]#从字符串的第1个字符到第3个字符进行切片
    3 s2=s[:3]#0可以省略
    4 s3=s[3:9]#从字符串的第4个字符到第9个字符进行切片
    5 s4=s[:5:2]#从字符串的第1个字符到第5个字符进行切片,加步长2
    6 s5=s[:]#把字符串全部取出来
    7 s6=s[-1:-4:-1]#反向取字符串,加反向步长
    8 print(s1)#>>>Hel
    9 print(s2)#>>>Hel
    10 print(s3)#>>>lo Wor
    11 print(s4)#>>>Hlo
    12 print(s5)#>>>Hello World!
    13 print(s6)#>>>!dl

    3、字符串常用方法

    1)* captalize()  首字母大写

    1 s='Hello World!'
    2 s1=s.capitalize()
    3 print(s1)#>>>Hello world!

    2)***upper()  字母全部大写   lower() 字母全部小写

    1 s='Hello World!'
    2 s2=s.upper()
    3 s3=s.lower()
    4 print(s2)#>>>HELLO WORLD!
    5 print(s3)#>>>hello world!
    1 #例  验证码不区分大小写
    2 code = 'QcaR'.upper()
    3 your_code =input('请输入验证码:').upper()
    4 if  your_code == code :
    5     print('验证成功')

    3)swapcase()  大小写翻转

    1 s='Hello World!'
    2 s1=s.swapcase()
    3 print(s1)#>>>hELLO wORLD!

    4)title()  非字母的元素隔开的每个单词首字母大写

    1 msg='hello world_hello*world'
    2 print(msg.title())#>>>Hello World_Hello*World

    5)center() 内容居中,总长度自己设定,默认填充None

    1 s='Hello World!'
    2 s1=s.center(20,"*")
    3 s2=s.center(20,)
    4 print(s1)#>>>****Hello World!****
    5 print(s2)#>>>    Hello World!

    6)*** strartwith() 判断以什么为开头      *** endswith() 判断以什么为结尾

    复制代码
    1 s='Hello World!'
    2 s1=s.startswith('H')
    3 print(s1)#>>>True
    4 s2=s.startswith('He')
    5 print(s2)#>>>True
    6 s3=s.startswith('e',1,5)#切片截取的字符串是否以‘e’为开头
    7 print(s3)#>>>True
    8 s4=s.endswith('!')
    9 print(s4)#>>>True
    复制代码

    7)strip() 去除首尾的空格,制表符 ,换行符 。不仅仅是去除空格

    注:lstrip() 只除字符串左边的;rstrip() 只除字符串右边的;

    复制代码
     1 s='   Hello World!   '
     2 ss='	Hello World!
    '
     3 s1=s.strip()
     4 print(s1)#>>>Hello World!
     5 s2=ss.strip()
     6 print(s2)#>>>Hello World!
     7 sss='tHello World!te'
     8 s3=sss.strip('t')#去掉字符串首尾的‘t’
     9 print(s3)#>>>Hello World!te
    10 s4=sss.strip('tey')#迭代去除首尾的‘t’、‘e’、‘y’,无序
    11 print(s4)#>>>Hello World!
    复制代码
    1 # 例  去除用户输入的空格
    2 name = input('>>>').strip()
    3 if name == 'oldboy':
    4     print('验证成功')

     8)#split()  字符串 转化 列表

    复制代码
     1 s='Hello World!'
     2 s1=s.split()
     3 print(s1)#>>>['Hello', 'World!']
     4 ss='He,llo Wo,rld!'
     5 s2=ss.split(',')
     6 print(s2)#>>>['He', 'llo Wo', 'rld!']
     7 sss='oHello World!'
     8 s3=sss.split('o')
     9 print(s3)#>>>['', 'Hell', ' W', 'rld!']
    10 s4=sss.split('o',1)#通过o切割字符串,且只切第一个o
    11 print(s4)#>>>['', 'Hello World!']
    复制代码

    9)join()  将列表 转化 字符串

    注:如果列表里是非字符串元素,会报错

    复制代码
    s='Hello World!'
    s1='+'.join(s)
    print(s1)#>>>H+e+l+l+o+ +W+o+r+l+d+!
    s2='_'.join(s)
    print(s2)#>>>H_e_l_l_o_ _W_o_r_l_d_!
    ss=['Hello','World','!']
    s3='_'.join(ss)
    print(s3)#>>>Hello_World_!
    复制代码

     10)replace() 把字符串的旧字符串替换成新的字符串,如果指定第三个参数max,则替换不超过max次。

    语法:str.replace(old,new[,max])

    1 s='Hello World!'
    2 s1=s.replace('W','w')
    3 print(s1)#>>>Hello world!

    11)find()  通过元素找索引     index()  通过元素找索引 找不到元素会报错

    复制代码
    1 s='Hello World!'
    2 s1=s.find("e",1,6)
    3 print(s1)#>>>1
    4 s2=s.find("m",1,6)
    5 print(s2)#>>>-1
    6 s2=s.index("o",1,6)
    7 print(s2)#>>>4
    复制代码

    12)format()   格式化输出

    1 s1='我叫{},今年{}岁,爱好{}'.format('Lucy','18','羽毛球')
    2 print(s1)#>>>我叫Lucy,今年18岁,爱好羽毛球
    3 s2='我叫{0},今年{1}岁,爱好{2}'.format('Lucy','18','羽毛球')#可以按照索引进行替换
    4 print(s2)#>>>我叫Lucy,今年18岁,爱好羽毛球

    13)is系列

    1 s='a123'
    2 print(s.isdigit())#字符串由数字组成
    3 print(s.isalpha())#字符串由字母组成
    4 print(s.isalnum())#字符串由字母或数字组成

    14)公共方法 :len()  返回对象的长度或项目个数; count() 数字字符串的元素出现的个数

    1 s='hello world'
    2 s1=len(s)
    3 print(s1)#>>>11
    4 s2=s.count("l",0,10)
    5 print(s2)#>>>3

    四、元祖tupe

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

    五、列表list

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

    li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]

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

    1、增

     1 #append()  在最后追加元素,无返回值
     2 l1=[111,'aaa',222,'bbb']
     3 l1.append('123abc')
     4 print(l1)#>>>[111, 'aaa', 222, 'bbb', '123abc']
     5 #insert() 插入
     6 l2=[111,'aaa',222,'bbb']
     7 l2.insert(1,'ccc')
     8 print(l2)#>>>[111, 'ccc', 'aaa', 222, 'bbb']
     9 #extend 迭代着增加
    10 l3=[111,'aaa',222,'bbb']
    11 l3.extend('ddd')
    12 print(l3)#>>>[111, 'aaa', 222, 'bbb', 'd', 'd', 'd']
    13 l4=[111,'aaa',222,'bbb']
    14 l4.extend(['333','444'])
    15 print(l4)#>>>[111, 'aaa', 222, 'bbb', '333', '444']

    2、删

    1 #pop 按照索引删除,有返回值,增删改查中唯一一个有返回值的
     2 l1=[111,'aaa',222,'bbb']
     3 print(l1.pop(0))#>>>111
     4 print(l1)#>>>['aaa', 222, 'bbb']
     5 #remove
     6 l1=[111,'aaa',222,'bbb']
     7 l1.remove('aaa')
     8 print(l1)#>>>[111, 222, 'bbb']
     9 #clear 清空列表,删除内容,但是在内存中还占用空间
    10 l1=[111,'aaa',222,'bbb']
    11 l1.clear()
    12 print(l1)#>>>[]
    13 #del 内存级别删除列表
    14 l1=[111,'aaa',222,'bbb']
    15 del l1
    16 print(l1)#报错,内存中删除列表
    17 #del 按照元素删除
    18 l1=[111,'aaa',222,'bbb']
    19 del l1[1]
    20 print(l1)#>>>[111, 222, 'bbb']
    21 #del 切片删除
    22 l1=[111,'aaa',222,'bbb']
    23 del l1[:3]
    24 print(l1)#>>>['bbb']

    3、改

    1 #按照索引去改
    2 l1=[111,'aaa',222,'bbb']
    3 l1[2]='ccc'
    4 print(l1)#>>>[111, 'aaa', 'ccc', 'bbb']
    5 #按切片去改  1.按切片的元素删除;2.按照添加的组成最小元素添加
    6 l1=[111,'aaa',222,'bbb']
    7 l1[:2]='abc'
    8 print(l1)#>>>['a', 'b', 'c', 222, 'bbb']

    4、查

    1 li=[111,'aaa',222,'bbb']
     2 #按照索引去查
     3 print(li[1])#>>>aaa
     4 print(li[-1])#>>>bbb
     5 #按照切片查询
     6 print(li[:2])#>>>[111, 'aaa']
     7 print(li[:3:2])#>>>[111, 222]
     8 #循环for
     9 for i in li:
    10     print(i)

    5、其他方法

    1 #count 计数
     2 l1=[111,'aaa',222,'bbb','aaa']
     3 print(l1.count('aaa'))#>>>2
     4 #len  返回对象的长度
     5 print(len(l1))#>>>5
     6 #通过元素找索引   列表中只有index
     7 print(l1.index('aaa'))#>>>1
     8 #排序
     9 # sort() 从小到大或从大到小排序
    10 l1=[3,6,4,7,6,9,1,2,5,0]
    11 l1.sort()#从小到大排序
    12 print(l1)#>>>[0, 1, 2, 3, 4, 5, 6, 6, 7, 9]
    13 l1.sort(reverse=True)#从大到小排序
    14 print(l1)#>>>[9, 7, 6, 6, 5, 4, 3, 2, 1, 0]
    15 #reverse 反向排序
    16 l1=[3,6,4,7,6,9,1,2,5,0]
    17 l1.reverse()
    18 print(l1)#>>>[0, 5, 2, 1, 9, 6, 7, 4, 6, 3]

    6、列表的嵌套

    1 l1=[111,'aaa',222,'bbb',['ccc','ddd',10]]
     2 # 1.将aaa全部变成大写
     3 # 方法一
     4 l1[1]='AAA'
     5 print(l1)#>>>[111, 'AAA', 222, 'bbb', ['ccc', 'ddd',10]]
     6 # 方法二
     7 l1[1]=l1[1].upper()
     8 print(l1)#>>>[111, 'AAA', 222, 'bbb', ['ccc', 'ddd',10]]
     9 # 2.给['ccc','ddd']追加'eee'
    10 l1[-1].append('eee')
    11 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['ccc', 'ddd',10, 'eee']]
    12 # 3.将'ccc'首字母大写
    13 l1[-1][0]=l1[-1][0].capitalize()
    14 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['Ccc', 'ddd',10]]
    15 # 4.将10通过数字相加,或者字符串相加等等,变成‘100’
    16 # 方法一
    17 l1[-1][-1]=str(l1[-1][-1]+90)
    18 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['ccc', 'ddd', '100']]
    19 # 方法二
    20 l1[-1][-1]=str(l1[-1][-1])+'0'
    21 print(l1)#>>>[111, 'aaa', 222, 'bbb', ['ccc', 'ddd', '100']]

    六、字典dict

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

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

    1、增

    # 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)

    2、删

    # 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

    3、改

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

    4、查

    # value1 = dic["name"]  # 没有会报错
    # print(value1)
    # value2 = dic.get("djffdsafg","默认返回值")  # 没有可以返回设定的返回值
    # print(value2)

    5、其他操作

    # 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'> 同上

    6、字典循环

    # 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) 

    七、其他(for,enumerate,range)

    1、for循环:用户按照顺序循环可迭代对象的内容

    msg = '老男孩python是全国范围内最好的python培训机构'
    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)

    2、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)

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

    for i in range(1,10):
        print(i)
    
    for i in range(1,10,2):  # 步长
        print(i)
    
    for i in range(10,1,-2): # 反向步长
        print(i)
  • 相关阅读:
    vue 如何点击按钮返回上一页
    vue遍历数组和对象的方法以及他们之间的区别
    css隐藏滚动条
    DOM编程以及domReady加载的几种方式
    修改默认滚动条默认样式
    面试题集锦
    正则表达式
    闭包及应用以及顺序处理ajax请求
    实现自己的(模仿jquery)toggle函数
    Asp.Net与SEO Viewstate优化终极解决方案
  • 原文地址:https://www.cnblogs.com/bjj-0102/p/8827220.html
Copyright © 2011-2022 走看看