python之常见数据类型(str,list,tuple,dict)及操作

I.字符串(str)
(1)取值

  •  字符串中的元素:单个字母,数字,汉字。单个字符都称为元素。

    s = 'hello!'
  • len(数据):统计数据的长度

    print(len(s))  # 6
  • 取某个值: 字符串名[索引值]

  • 正序:索引值从0到 (len-1) , 逆序:索引值从-(len)到-1
  • 切片:字符串名[索引头:索引尾:步长] 取头不取尾,步长默认为1
  • 取全部:字符串名[:]
  • 倒序:字符串名[::-1],字符串名[-1: -(len):-1]
    print(s[5])  # 索引,!
    print(s[-1])  # !
    print(s[1:5:2])   # el      # 取头不取尾1,3
    print(s[1:5])  # ello      # 1,2,3,4
    print(s[2:4:2])  # l     # 2
    print(s[:])  # hello!     # 取全部
    print(s[:4])  # hell     # 取3之前的全部0,1,2,3
    print(s[3:])  # lo!     # 3以后的全取 3,4,5
    print(s[-1:-7:-1])  # 倒序输出:!olleh
    print(s[::-1])  # 倒序输出:!olleh

(2)分割 :字符串名.split('指定切割符号',指定切割次数)

  • 只有字符串可以使用
  • 返回一个列表类型的数据
  • 切割次数默认为1
    print(s.split('e'))  # ['h', 'llo!']
    print(s.split('l'))  # ['he', '', 'o!']
    print(s.split('l', 1))  # ['he', 'lo!']

(3)替换 :字符串名.replace('指定替换值','新值',指定替换次数)

s1 = 'heelo!'
new = s1.replace('o', '@')
print(new)  # heel@!
new1 = s1.replace('e', '1', 2)
print(new1)  # h11lo!

(4)去除指定字符:字符串名.strip('指定去除字符',指定去除次数)

# 只去掉头和尾的字符,不能去除直接字符
s = ' hello '
new3 = s.strip()    # 默认去空格
print(new3)   # hello
new4 = s.strip(' he')
print(new4)  # llo

(5) 拼接

  • +:注意必须数据类型相同
  • join:字符串名.join((字符串1,字符串2))
    s_1 = 'python,'
    s_2 = 'welcome!'
    s_3 = 666
    print(s_1 + s_2 + str(s_3 ))  # s_3强制转换后才能拼接  # python,welcome!666
    print(s_1, s_2, s_3)  # python, welcome! 666

(6)格式化输出

  • format 用{}来占位
  • %:%s字符串(任何数据), %d数字(整型) %f浮点数 (%.2f四舍五入保留两位小数,.x %指定保留百分比位数
  • 数字补齐: 数字补零(填充左边,宽度为4)【{:x>4s}】;数字补零(填充右边,宽度为4)【{:x<4s}】
  • 对齐: 左对齐,默认宽度为10 【{:10s}】;左对齐,宽度为10【{:<10s}】;中间对齐,宽度为10【{:^10s}】
    age = 18
    name = 'zhengzi'
    print("欢迎进入" + str(age) + "岁的" + name + "的博客园")  # 欢迎进入18岁的zhengzi的博客园
    # (1)格式化输出1:format 用{}来占位
    print("欢迎进入{}岁的{}的博客园".format(age, name))  # 欢迎进入18岁的zhengzi的博客园,默认顺序
    print("欢迎进入{1}博客园,她今年{0}".format(age, name))  # 欢迎进入zhengzi博客园,她今年18
    # (2)格式化输出2:% %s字符串(任何数据), %d数字(整型)  %f浮点数 (%.2f四舍五入保留两位小数)
    print("欢迎进入%d岁的%s的博客园" % (age, name))  # 欢迎进入18岁的zhengzi的博客园

(7)字符串转义

  • :换行符 :水平制表符(tab键 :为4个字符) r:关闭转义


II. 列表 (List)

什么时候用列表?---同一个类型的数据,建议用列表
注意:列表中的子元素为元组,不可以对元组的子元素进行修改,但可以整体修改
m = [1, 0.02,'hello',(1,2,3),True]
# m[3][2] = 'nihao'错误
m[3] = 'nihao'
print(m)  # [1, 0.02, 'hello', 'nihao', True]

例如:

a = [1, 0.02,'hello',[1,2,3],True]

(1) 取值

  • 取某个值 : 列表[索引值]
  • 切片 : 列表名[索引头:索引尾:步长]
    # 取值
    print(a[-1])  # True
    print(a[2])  # hello
    #切片
    print(a[::2])  # [1, 'hello', True]
    print(a[0:5:2])   # [1, 'hello', True]

(2) 添加元素

  • 追加(1个元素)在末尾: 列表名.append(追加的元素)
  • 插入: 列表名.insert(指定位置,插入值)
  • 添加多个值 : 列表名.extend(元素1,元素2...)
    a = [1, 0.02,'hello',[1,2,3],True]
    a.append('你很可爱')
    print('a列表的值{0}'.format(a))
    
    a.insert(2,'kite')
    print('a列表的值{0}'.format(a))
    
    
    a.extend([11,12,13])
    print('a列表的值{0}'.format(a))  # a = [1, 0.02,'hello',[1,2,3],True,11,12,13]

(3) 修改 : 列表名[索引值] = 赋新的值

b = [1, 0.02,'hello',[1,2,3],True]
b[1] = 'Time'  # 赋值
print('b列表的值{0}'.format(b))

(4) 删除

  • 删除指定元素 : 列表名.pop(索引值) , 列表名.remove(索引值) 【指定元素不存在,报错】
  • 删除最后一个元素 : 列表名.pop()
  • 清空列表 : 列表名.clear()
    a.pop()
    a.pop(2)  # 删除a[2] #删除指定索引位置的元素
    
    a.remove(1)  # 删除1
    
    a.clear()

(5)查找元素索引值:列表名.index(元素)

  • 查找指定元素的下标,如果没有报错,找到返回下标

(6)统计元素次数:列表名.count(元素)
(7)排序:列表名.sort() 【只对数值排序】

  • 升序(从小到大): 列表名.sort()
  • 降序:列表名.sort(reverse=True)

(8)反转:列表名.reverse()
(9) 使用时间 : 需对元素进行增删改查时

注意:快速格式化(解决列表值之间有下划线的问题):快捷键:Ctrl+Alt+L 或 code - reformat code

III. 元组 ( Tuple )

什么时候用列表?---操作数据库存放时,不支持修改(增删改)

   注意:元组中的子元素为列表,可以对列表的子元素修改

m = (1, 0.02,'hello',[1,2,3],True)
m[3][2] = 'nihao'
print(m)  # (1, 0.02, 'hello', [1, 2, 'nihao'], True)

(1) 取值

  • 取单个值 : 元组名[索引值]
  • 切片 : 元组名[索引头:索引尾:步长]
    a = (1, 0.02,'hello',[1,2,3],True)
    
    print(a[-1])  # True
    print(a[2])  # hello
    
    print(a[::2])  # [1, 'hello', True]
    print(a[0:5:2])   # [1, 'hello', True]

注意:元组里面只有一个元素,需要加逗号 【如果不加逗号,不是元组,是数值或字符串】

x = ('hello')
print(type(x))  # <class 'str'>
y = (1)
print(type(y))  # <class 'int'>
z =(1,)
print(type(z))  # <class 'tuple'>

列表与元组的区别:列表是可变的,可以追加,修改,删除其中的元素;而元组是不可变的,不可以追加,修改,删除其中的元素。元素个数不确定时,建议使用列表。

IV. 字典 ( Dict )
(1)表达方式

  • key:value(键值对)
  • dict 内置函数dict(key1=value1,key2=value2)
  • 列表嵌套元组:dict([(键1,值1),(键2,值2)])

(2) 取值

  • 取键对应的值 : 字典名[key] 【键不存在,会报错】;字典名.get(key) 【如果键不存在,返回NONE】
  • 取所有键 : 字典名.keys()
  • 取所有值:字典名.values()
  • 取键值对 : 字典名.items() 【返回 是dict_items类型,可以通过list转为列表类型;转换后,列表嵌套元组格式】

(3) 新增

  • 设置默认值 : 字典名.setdault()
  • 字典里不存在的key :字典名[新key] = value
  • 增加多个元素:字典名.update({key1:value1,key2:value2})

(4) 修改

  • 字典中已存在的key : a[已存在的key] = value

(5) 删除

  • 删除指定key的键值对 : 字典名.pop(key)
  • 删除字典中最后一个键值对:popitem()
  • 删除数据的关键字,可以删除任何数据(可变类型): del 字典名[key]
  • 删除整个字典:del 字典名
  • 清空 : 字典名.clear()

(6) 拷贝: 字典名.copy()

n2变,n变,n1不变 :
n = {'name':'kite','age':18}
n1 = n.copy()
n2 = n
n2[2] = 'four'
print('修改后n',n)
print('修改后n1',n1)
print('修改后n2',n2)

V. 布尔值 : bool , 返回值是True,False
VI. 数值 ( int,float )

原文地址:https://www.cnblogs.com/kite123/p/13743672.html