zoukankan      html  css  js  c++  java
  • 基本数据类型--全

    基本数据类型

    1.字符串

    特性

    • 不可变性
      • 任何操作都不会对源字符串有任何影响
      • 例name=aleX name.upper() print(name) #结果aleX
    • 无法取消特殊字符的含义
      • 强制取消,在字符串前面加r
      • name=r’l hf’

    索引和切片

    索引:起始下标是0(从左到右), (-1)从右到左
    切片: s[起始位置: 结束位置: 步长]
    特点:顾头不顾尾
    

    常用方法

    • 1. upper() 转换成大写
      
      2. strip() 去掉空格 :只管左右两边的,中间的不管
      	例:print(s7.strip("abc"))也可以指定去掉的元素,即括号内加要去掉的内容
      	
      3. replace() 替换
      	例:replace('sb', 'alex', 2)  2是代表替换几个,不写默认一个
      	
      4. split() 切割
      	split("sb")  切割完形成列表,刀在两端时,会形成空字符串
      
      5. format() 格式化输出
      	例 s= “我叫{0},我今年{1}岁了“。format{“刘能”,“23”}
      	s12 = "我叫{name}, 今年年{age}岁了了, 我喜欢{singer}".format(name="周杰伦", singer="周润 发", age=28)     # 指定关键字 print(s12)
      
      6. startswith() 判断是否以xxx开头
      
      7. find() 查找. 找不到返回-1
      	find(”a”,8,20)  在切片8-20中找a的位置
      	
      8. len() 内置函数. 直接使用. 不用点操作 求字符串的长度
      
      9. count() 计算xx在字符串中出现的次数
      

    capitalize() 首字母大写
    casefold() 把字符串全变小写

    
    
    
    + 迭代
    
    + ```python
      for 变量 in 可迭代对象:
      	循环体
      else:
      ```
    
    ### 2.列表
    
    #### 定义
    
    + []内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素
    + 创建形式
    + `l1 = [1, 2, '太白']`
    + `l1 = list(iterable)  # 可迭代对象`
    + `l1 = [i for i in range(1,5)]列表推导式`
    
    #### 增
    
    ```python
    .append()  :在最后添加
    .insert(1,“东西”):将东西插入到1的位置
    .extend([])	  :迭代添加 ,在最后添加
    
    lt = [22,33,44,55,66]
    lt.insert(2,'文字')
    print(lt)   #[22, 33, '文字', 44, 55, 66]
    
    lt = [22,33,44,55,66]
    lt.extend([1,2,3])
    print(lt)#[22, 33, 44, 55, 66, 1, 2, 3] 
    

    remove()   ()中的内容为要删除的东西,不存在的话会报错
    pop()      ()中的数字为指定位置删除,返回被删除的数据
    del lst[ : ]  #切片删除,顾头不顾尾
    clear()    列表清空
    
    实例:
    	lt = [22,'44','张三','李胜']
        lt.remove('44')
        print(lt)#[22, '张三', '李胜']
    
        lt = [22,'44','张三','李胜']
        lt.pop(2)
        print(lt)[22, '44', '李胜']
    
        lt = [22,'44','张三','李胜']
        del lt[1:2]  #切片删除,顾头不顾尾
        print(lt)#[22, '张三', '李胜']
    

    # 按照索引改值
    l = ['太白', 'alex', 'WuSir', '女神']
    l[0] = '男神'
    print(l) # ['男神', 'alex', 'WuSir', '女神']
    
    # 按照切片改值(迭代着增加)
    l = ['太白', 'alex', 'WuSir', '女神']
    l[1:3] = 'abcdefg'
    print(l) # ['太白', 'a', 'b', 'c', 'd', 'e', 'f', 'g', '女神'] 
    
    # 按照切片(步长)改值(必须一一对应)
    l = ['太白', 'alex', 'WuSir', '女神']
    l[::2] = '对应'
    print(l) # ['对', 'alex', '应', '女神']
    

    • 切片查
    • 循环查for el in lst

    常用方法

    1. count(数)(某个元素在列表中出现的次数)。

      1 a = ["q","w","q","r","t","y"]
      2 print(a.count("q"))#2
      
    2. index(从列表中找出某个值第一个匹配项的索引位置)

      a = ["q","w","r","t","y"]
      print(a.index("r")) #2
      
    3. sort (在原位置对列表进行排序)默认升序

      • sort(reverse = Ture) 表示降序
    4. reverse (将列表中的元素反向存放)

    1 a = [2,1,3,4,5]
    2 a.sort()# 他没有返回值,所以只能打印a
    3 print(a)
    4 a.reverse()#他也没有返回值,所以只能打印a
    5 print(a)
    
    1. 列表之间的相加和相乘

      l1 = [1, 2, 3]
      l2 = [4, 5, 6]
      # print(l1+l2)  # [1, 2, 3, 4, 5, 6]
      print(l1*3)  # [1, 2, 3, 1, 2, 3, 1, 2, 3]
      

    小练习

    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
    
    s = "qwert"
    li[4:]=s
    print(li)   #['alex', 'WuSir', 'ritian', 'barry', 'q', 'w', 'e', 'r', 't']
    
    针对列表names=[‘金角大王’, ‘黑姑娘’, ‘rain’, ‘eva’, ‘狗蛋’, ‘银角大王’, ‘eva’,’鸡头’]进入以下操作
    通过names.index()的方法返回第2个eva的索引值
    
    names.index('eva',4,-1) 第二个eva的索引值
    

    优缺点

    1. 可以储存大量数据,量大查询速度会慢
    2. 只能顺序储存,关联性差

    3.元组

    特性

    • 不可变性

      • 元组本身不可变性,但其中其它元素可变
      • (99, 88, 77, ['Alex', 'Jack'], 33)
      • 这个['Alex', 'Jack']列表中的元素可以改变
        • 不变的是这个元素特有的性质( 列表)

    创建

    ages = (11, 22, 33, 44, 55)
    #或
    ages = tuple((11, 22, 33, 44, 55))
    

    常用操作

    • 索引

    • 切片

    • 循环 for el in tuple

    • 长度 len()

    • 包含 alex in names 结果True或Flase

    • index和count方法

      • tu = ('太白', '太白', 'WuSir', '吴超')
        print(tu.count('太白')) # 2
        tu = ('太白', [1, 2, 3, ], 'WuSir', '女神')
        print(tu.index('太白')) # 0
        

    4.字典

    基本状况

    • 查询速度快,不受dict的大小影响

    • 消耗内存大

    • key 是唯一的,是不可变(可哈希)的数据类型,有int、str、bool、tuple

    创建操作

    >>>person = {"name": "alex", 'age': 20} 
    #或
    >>>person = dict(name='seven', age=20)
    #或
    >>>person = dict({"name": "egon", 'age': 20})
    #或
    >>> {}.fromkeys([1,2,3,4,5,6,7,8],100)
    {1: 100, 2: 100, 3: 100, 4: 100, 5: 100, 6: 100, 7: 100, 8: 100}
    

    dic['weight'] = 75 # 没有weight这个键,就增加键值对。有就改
    dic.setdefault('name',54)  #没有就添加,有就键不变
    

    # pop 通过key删除字典的键值对,有返回值,可设置返回值。
    
        dic = {'name': '太白', 'age': 18}
        ret = dic.pop('name')
        print(ret,dic) # 太白 {'age': 18}
        
        dic = {'name': '太白', 'age': 18}
        ret = dic.pop('n','alex')  #设置返回值。
        print(ret,dic)  #alex {'name': '太白', 'age': 18}
    
    popitem()  #删除最后一个,有返回值
    
        dic = {'name': '太白', 'age': 18,'num':666}
        ret = dic.popitem()
        print(ret,dic) # ('num', 666) {'name': '太白', 'age': 18}
    
    clear   #清空字典
    del dic #删除整个字典
    del     #通过键删除键值对
    	del names["oldboy"] # 删除指定key,同pop方法
    

    dic['key'] = 'new_value',如果key在字典中存在,'new_value'将会替代原来的value值;
    dic.update(dic2) 将字典dic2的键值对添加到字典dic中
    

    dic['key']  #返回字典中key对应的值,若key不存在字典中,则报错;
    dic.get(key, default = None)#返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
    'key' in dic #若存在则返回True,没有则返回False
    dic.keys()   返回一个包含字典所有KEY的列表;
    dic.values() 返回一个包含字典所有value的列表;
    dic.items()  返回一个包含所有(键,值)元组的列表;
    

    循环

    1、for k in dic.keys()
    2、for k,v in dic.items() 
    3、for k in dic   # 推荐用这种,效率速度最快
    
        info = {
            "name":"小猿圈",
            "mission": "帮一千万极客高效学编程",
            "website": "http://apeland.com"
        }
        for k in info:
            print(k,info[k])
        输出
        name 小猿圈
        mission 帮一千万极客高效学编程
        website http://apeland.co
    

    赋值(拆包)

    a,b = 1,2
    print(a,b) #1 2
    
    a,b = ('你好','世界')  # 这个用专业名词就叫做元组的拆包
    print(a,b)#你好 世界
    
    a,b = ['你好','大飞哥']
    print(a,b)#你好 大飞哥
    
    a,b = {'汪峰':'北京北京','王菲':'天后'}
    print(a,b)#汪峰 王菲
    
    for k,v in dic.items():
        print('这是键',k)
        print('这是值',v)
    

    5.set集合

    特性

    • 无序
    • 不重复
    • 元素是可哈希(不可变)类型

    作用

    1. 去重
    2. 关系测试

    .add() 
    .update()
    
        set1 = {'alex','wusir','barry'}
        set1.update('ABC')
        print(set1)#{'B', 'A', 'barry', 'C', 'wusir', 'alex'}
    

    .remove()  删除一个元素
    .pop()     随机删除一个元素
    .clear()   清空集合
    del set1   删除集合
    

    集合之间的其它操作

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    
    交集&
    并集|
    差集-		#(set1 - set2)  # {1, 2, 3}
    反交集^
    

    6.枚举

    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 太白
    
  • 相关阅读:
    TreeList 树形控件 实现带三种状态的CheckBox
    SQL 左外连接,右外连接,全连接,内连接(转)
    在DataTable中进行数据查询 (转)
    uva10594 Data Flow最小费用流,两个代码区别不大(我没看出区别),为什么一个对,另一个超时!!
    SGU142 Keyword好题
    uva 10881
    南京理工1747(数论)WA了好多遍!
    CF161D 树形dp
    uva 11646(大水题几何分类)
    求a加到b二进制加法有多少次进位。
  • 原文地址:https://www.cnblogs.com/xiaobai686/p/12082760.html
Copyright © 2011-2022 走看看