基本数据类型--全

基本数据类型

1.字符串

特性

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

索引和切片

索引:起始下标是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()   把字符串全变小写
  • 迭代

    • for 变量 in 可迭代对象:
          循环体
      else:

2.列表

定义

  • []内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素
  • 创建形式
    • l1 = [1, 2, '太白']
    • l1 = list(iterable) # 可迭代对象
    • l1 = [i for i in range(1,5)]列表推导式

.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 太白

猜你喜欢

转载自www.cnblogs.com/xiaobai686/p/12082760.html