基础数据类型总结

一、数字类型

  一、int

    不可变数据类型(可哈希)

    数字主要是用于计算用的

  二、bool

    不可变数据类型(可哈希)

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

      真 1 True

      假 0 False

      int-->str str(int)

      str-->int int(str)

      int--->bool 0 代表false 非零代表True

      str--->bool 非空 为True ,空字符串就是False

      bool-->str 无意义 ,很少用到

  三、float

    不可变数据类型(可哈希)

    小数数字运算

  四、complex

    不可变数据类型(可哈希)

    复数运算

二、序列类型

  一、str

    不可变数据类型(可哈希)

    1、索引和切片

#索引与切片 s[起始索引:截止索引:步长]
s = '老男孩是最好的培训机构'
#索引
s1 = s[0]   
print(s1)   #
s2 = s[2]
print(s2)   #
#切片  顾头不顾腚
s4 = s[0:3]
print(s4)   # 老男孩
s41 = s[:3]
print(s41)  # 老男孩
s6 = s[:]   # 老男孩是最好的培训机构
print(s6)
#步长
s7 = s[:5:2]    # 老孩最
print(s7)
s8 = s[:7:3]    # 老是的
print(s8)
# 反向步长
s7 = s[-1:-5:-1]    # 构机训培
print(s7)

    2、字符串常用方法

s = 'laonanHai'
# 1、*** 首字母大写,其他字母小写
s1 = s.capitalize()
print(s1)   # Laonanhai

# 2、***全部大写,全部小写
s2 = s.upper()
s3 = s.lower()
print(s2,s3)    # LAONANHAI laonanhai
code = 'aeQu'.upper()
your_code = input('请输入验证码').upper()
if your_code == code:
    print('验证码输入成功')
# 3、 * 居中center
s4 = s.center(30)
print(s4)
s4 = s.center(30,'*')
print(s4)

# 4、**大小写翻转
s5 = s.swapcase()
print(s5)   # LAONANhAI
s = 'alex wusir*laonanhai2taibai'
# 5、每个单词的首字母大写(非字母隔开)
s6 =s.title()
print(s6)   # Alex Wusir*Laonanhai2Taibai

s = 'alexlaonanhai'
# 6、***判断以什么为开头,以什么为结尾。
# startswith endswith()
s7 = s.startswith('a')
s71 = s.startswith('al')
s72 = s.startswith('alex')
s73 = s.startswith('alex')
s74 = s.startswith('l', 4)
print(s74)  # True
print(s7,s71,s72,s74)   # True True True True
s = '  laonanhai '
s = '\nlaonanhai\t'
# 7、***去除首尾的空格,换行符,tab
# 去除左边的空格,换行符,tab   lstrip()
# 去除右边的空格,换行符,tab   rstrip()
#strip()
print(s)
print(s.strip())
print(s.lstrip())
print(s.rstrip())
name = input('请输入用户名:').strip()
if name == 'alex':
    print(666)
s = ',laoxnanhaialexl'
print(s.strip(',lax'))  # oxnanhaiale
s = 'alexex'
# 8、*** find  index 通过元素找索引
print(s.find('e'))  # 2
print(s.find('e',3))    # 4(从索引3开始)
print(s.find('A'))  # -1
# print(s.index('A')) #执行报错
s = 'alexex'
# 9、*** count 寻找元素出现的个数 可切片
print(s.count('e')) # 2
print(s.count('ex'))    # 2
a1='ladsfaldfakd000lsd32320'
ret3 = a1.count("a") # 可切片
print(ret3) # 3
# 10、***replace 替换
s = '将发生多了范德萨发范德萨回复'
s1 = s.replace('范德萨', '小粉嫩')
print(s1)   # 将发生多了小粉嫩发小粉嫩回复
s2 = s.replace('范德萨', '小粉嫩',1)
print(s2)   # 将发生多了小粉嫩发范德萨回复
s3 = s.replace('范德萨', 'sb')
print(s3)   # 将发生多了sb发sb回复

# 11、***** split 分割  str ---> list
s = 'alex wusir taibai'
print(s.split())    # ['alex', 'wusir', 'taibai']
s1 = 'alex,wusir,taibai'
print(s1.split(','))    # ['alex', 'wusir', 'taibai']
s2 = 'alexawusirataibai'
print(s2.split('a'))    # ['', 'lex', 'wusir', 't', 'ib', 'i']
s3 = 'alexawusirataibai'
print(s3.split('a',1))  # 分割次数  ['', 'lexawusirataibai']


# 12、***** format 格式化输出
#三种用法
#第一种用法:
s = '我叫{},今年{},爱好{}'.format('MT',18,'母牛')
#第二种用法
s = '我叫{0},今年{1},爱好{2},我依然叫{0},今年还是{1}'\
    .format('MT',18,'母牛')
#第三种 键值对
s = '我叫{name},今年{age},爱好{hobby}'.format(age=18, name='MT', hobby='闷儿')
name='123a'
# 13、字符串由字母或数字组成,字符串只由字母组成,字符串只由数字组成
print(name.isalnum()) # 字符串由字母或数字组成  True
print(name.isalpha()) # 字符串只由字母组成    False
print(name.isdigit()) # 字符串只由数字组成    False
if name.isdigit():
    name = int(name)
    print(name,type(name))
else:
    print('您输入的由非数字元素')
# 14、casefold
# 用法:S.casefold()
# 意义:lower() 方法只对ASCII编码,也就是‘A-Z’有效,对于其他语言(非汉语或英文)中把大写转换为小写的情况只能用 casefold() 方法
# 用法:
s = 'aBBex '
print(s.casefold())  # abbex
# 15、expandtabs
# 用法:S.expandtabs(tabsoze=8)
# 意义:把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8。
# 从头开始数,数到第一个\t正好为8个空格,不足则补空格,如果还有\t,接着从第一个\t数到第二个\t仍然为8个空格,以此类推直到最后一个\t结束。
# 用法
S = "this is\tstring example....wow!!!"
print("原始字符串: " + S)    #原始字符串: this is    string example....wow!!!
print("替换 \\t 符号: " + S.expandtabs())   #替换 \t 符号: this is string example....wow!!!
print("使用16个空格替换 \\t 符号: " + S.expandtabs(16))  #使用16个空格替换 \t 符号: this is         string example....wow!!!

  二、list

    可变数据类型(不可哈希)

    注:对于list,在循环一个列表时,最好不要进行删除的动作(一旦删除,索引会随之改变),容易出错。

    1、索引、切片、步长

li = ['alex',123,True,(1,23,34,'wusir'),[2412,234,'xiaomin'],{'name':'alex'}]
#索引、切片、步长
print(li[0]) # alex
print(li[2]) # True
print(li[:4]) # ['alex', 123, True, (1, 23, 34, 'wusir')]
print(li[3:1:-1]) # [(1, 23, 34, 'wusir'), True]

    2、增

# 1、append 在列表最后加入元素,结果没有返回值,直接修改列表
li.append('alex')
print(li) # [1, 'a', 'b', 'a', 2, 3, '老男孩', 'alex']
li.append([1,2,3])
print(li) # [1, 'a', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3]]
# 2、insert 插入 可以按索引插入
li.insert(2,'sb')
print(li) # [1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3]]
# 3、extend 迭代添加,到最后
li.extend('214')
print(li) # [1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4']
li.extend([1,2,'ab'])
print(li) # [1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2, 'ab']

    3、删

li = [1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2, 'ab']
# 1、remove 按元素删除
li.remove('a')
print(li) #[1, 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2, 'ab']
# 2、pop 按索引删除,默认删除最后一个,返回值是删除的元素
print(li.pop()) # ab
print(li) #[1, 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2]
print(li.pop(2)) # b
print(li) #[1, 'sb', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2]
# 3、clear 清空列表内容
li.clear()
print(li) #[]
# 4、del 删除列表或者切片删除
li = [1,2,4,6]
# del li
print(li) # 列表不存在了
li = [1,'a','b','a',2,3,'老男孩']
# 切片删除,可以按步长删除
del li[3:]
print(li)   # [1, 'a', 'b']
li = [1,'a','b','a',2,3,'老男孩']
del li[:3:2]
print(li) # ['a', 'a', 2, 3, '老男孩']

    4、改

# 1、按照索引改
li = [1,'a','b','a',2,3,'老男孩']
li[0] = 'abc'
print(li) # ['abc', 'a', 'b', 'a', 2, 3, '老男孩']
li[0] = ['abc',123,'eta']
print(li) # [['abc', 123, 'eta'], 'a', 'b', 'a', 2, 3, '老男孩']
# 2、按照切片去改
li[:3] = 'sb'
print(li) # ['s', 'b', 'a', 2, 3, '老男孩']
li[:2] = ['sb']
print(li) # ['sb', 'a', 2, 3, '老男孩']

    5、查

li = ['sb', 'a', 2, 3, '老男孩']
# 1、查看,切片步长查看
print(li[0]) # sb
print(li[:2]) # ['sb', 'a']
print(li[::2]) # ['sb', 2, '老男孩']
# 2、for 循环
for i in li:
    print(i)
# sb
# a
# 2
# 3

    6、其他操作

# 1、sort从小到大,正向排序
li = [23,21,43,1,54]
li.sort()
print(li) # [1, 21, 23, 43, 54]
# 2、从大到小,反向排序
li.sort(reverse =True)
print(li) # [54, 43, 23, 21, 1]
# 3、翻转
li.reverse() # [1, 21, 23, 43, 54]
# 4、长度 len
print(len(li)) # 5
print(li) #[1, 21, 23, 43, 54]
# 5、count
li = ['t',2342,'t','safs','sadfast','eawt']
print(li.count('t')) # 2
#index 通过元素找索引
print(li.index('t')) # 0    没有找到报错
# 6、join用字符串做一个连接符
#连接可迭代对象中的每一个元素,形成一个新的字符串
s = 'xxoo'.join('sb')
print(s) # sxxoob
l1 = ['wusir','taibai']
print(' '.join(l1)) # wusir taibai
print(''.join(l1)) # wusirtaibai

 

  三、tuple

    不可变数据类型(可哈希)

    元组被称为只读列表,即数据可以被查询,但不能被修改,字符串的索引与切片操作同样适用于元组

    :对于元组:如果只有一个元素,并且没有逗号,此元素是什么数据类型,该表达式就是什么数据类型

tu = ([1,2,3])
tu1 = ([1,2,3],)
print(tu,type(tu))  # [1, 2, 3] <class 'list'>
print(tu1,type(tu1))    # ([1, 2, 3],) <class 'tuple'>

三、散列类型

  一、dict

    可变数据类型(不可哈希)

    字典的键:不可变数据类型,字典的值:任意数据类型

    注:在循环字典中,不能增加或者删除此字典的键值对。

# 将字典中含有k元素的键,对应的键值对删除。
dic = {'k1':'value1','k2':'value2','name':'wusir'}
l1 = []
for i in dic:
    if 'k' in i:
        l1.append(i)
for i in l1:
    del dic[i]
print(dic)

    1、增

# 1、有则覆盖,无则添加
dic['hobby'] = "girl"
print(dic) #{'name': 'jin', 'age': 18, 'sex': 'male', 'hobby': 'girl'}
dic["name"] = 'alex'
print(dic) #{'name': 'alex', 'age': 18, 'sex': 'male', 'hobby': 'girl'}
# 2、setfault添加一个键值对,有则不变,无则添加。
dic.setdefault('name','sb')
print(dic) #{'sex': 'male', 'age': 18, 'name': 'alex', 'hobby': 'girl'}
dic.setdefault('sb','sb')
print(dic) #{'sb': 'sb', 'age': 18, 'hobby': 'girl', 'name': 'alex', 'sex': 'male'}
# 3、fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值 dict.fromkeys(seq[, value]))
dic = dict.fromkeys('abc','alex')
print(dic)  #{'c': 'alex', 'a': 'alex', 'b': 'alex'}
dic = dict.fromkeys([1,2,3],[])
print(dic)  #{1: [], 2: [], 3: []}
dic[1].append('laonanhai')
print(dic)  #{1: ['laonanhai'], 2: ['laonanhai'], 3: ['laonanhai']}

    2、删

dic = {'sb': 'sb',
       'age': 18,
       'hobby':'girl',
       'name': 'alex',
       'sex': 'male'}
# 1、pop 有返回值的删除
print(dic.pop('sb')) # sb
print(dic) # {'name': 'alex', 'age': 18, 'sex': 'male', 'hobby': 'girl'}
print(dic.pop('hobby')) # girl
print(dic) # {'sex': 'male', 'name': 'alex', 'age': 18}
print(dic.pop('a','没有值')) # 如果删除内容不存在后面可以加个返回值结果是没有值
print(dic) # {'age': 18, 'sex': 'male', 'name': 'alex'}
print(dic.pop('age',65))  # 有要删除内容,返回删除内容 18
print(dic) # {'sex': 'male', 'name': 'alex'}
# 2、clear 清空
dic.clear()
print(dic) # {}
# 3、del 删除列表,按键值删除键值对
# del dic # 删除字典
# print(dic) # 报错,字典不存在了
dic = {"name":"jin",
       "age":18,
       "sex":"male",
       }
del dic['name']
print(dic) # {'sex': 'male', 'age': 18}
print(dic.popitem()) # 随机删除,有返回值,返回的是删的内容 ('sex', 'male')
print(dic) # {'age': 18}

    3、改

# 1、直接修改
dic = {"name":"jin",
       "age":18,
       "sex":"male",
       }
dic['name'] = 'sb'
print(dic) # {'age': 18, 'sex': 'male', 'name': 'sb'}
# 2、两个字典的改
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic) # 对dic2进行升级,把dic内容覆盖到dic2中
print(dic2) # {'weight': 75, 'age': 18, 'sex': 'male', 'name': 'jin'}
print(dic) # {'sex': 'male', 'age': 18, 'name': 'jin'}

    4、查

# 1、直接查找,如果不存在会报错,推荐用get查找
dic = {'sex': 'male', 'age': 18, 'name': 'jin'}
print(dic["name"]) # jin
# print(dic['sb']) # 报错
print(dic.get('name')) # jin
print(dic.get('sb')) # None 默认返回None
print(dic.get('sb','123344sdafasd')) # 123344sdafasd 可以后面定义返回值

    5、其他操作

# key() values() items()
dic = {'sex': 'male', 'age': 18, 'name': 'jin'}
print(dic.keys(),type(dic.keys())) #dict_keys(['sex', 'name', 'age']) <class 'dict_keys'>
# 把键放在了一个类似列表的容器中,可循环,可转化为列表
for i in dic.keys():
    print(i)
    # name
    # sex
    # age
# 把键值放在了一个类似列表的容器中,可循环,可转化为列表
for i in dic.values():
    print(i)
    # 18
    # jin
    # male
# 把键值对放在了一个类似列表的容器中,可循环,可转化为列表
for i in dic.items():
    print(i)
    # ('age', 18)
    # ('name', 'jin')
    # ('sex', 'male')
# 特殊类型 dict 转化成list
print(list(dic.keys())) #['sex', 'age', 'name']

  二、set

    不重复,无序,它里面的元素是可哈希的。他本身是不可哈希的,他不能作为字典的key。

    作用:1,去重。

       2,数据关系的测试。

# 1、去重
li = [11,11,22,22,33,33,33,44]
li = list(set(li))
print(li)   #[33, 11, 44, 22]
set = {11,22,33,11,22,33,44}
print(set)  #{33, 11, 44, 22}

# 2、增
set1 = {'alex','wusir','ritian','egon','barry'}
set1.add('sb')
print(set1) #{'sb', 'barry', 'egon', 'ritian', 'wusir', 'alex'}
set1.update('abc')
set1.update([1,2,3])    #迭代的增加
print(set1) #{'sb', 1, 2, 3, 'barry', 'egon', 'ritian', 'a', 'b', 'wusir', 'alex', 'c'}

# 3、删
set1.remove('sb')
print(set1) #{'c', 1, 2, 'ritian', 'wusir', 3, 'barry', 'b', 'a', 'alex', 'egon'}

set1.clear()
print(set1) #set()

del set1
# print(set1) #删除了

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
# 4、交集 & intersection
print(set1 & set2)  #{4, 5}
print(set1.intersection(set2))  #{4, 5}
# 5、反交集 ^ symmetric_difference
print(set1^set2)    #{1, 2, 3, 6, 7, 8}
print(set.symmetric_difference(set2)) #{1, 2, 3, 6, 7, 8}
# 6、差集 | union
print(set1 | set2)  #{1, 2, 3, 4, 5, 6, 7, 8}
print(set1.union(set2)) #{1, 2, 3, 4, 5, 6, 7, 8}

set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
print(set1.issubset(set2))  # True 子集
print(set2.issuperset(set1))  # True set2 是set1的超集

set1 = {'barry',"wusir"}
set2 = frozenset(set1)  # 把集合变成可哈希的,有序集合
print(set2,type(set2))  # frozenset({'barry', 'wusir'}) <class 'frozenset'>

 

  python基础数据类型思维导图:https://www.processon.com/view/link/5ae735c0e4b039625af92020

posted @ 2018-05-01 04:06  小杰~~  阅读(405)  评论(0编辑  收藏  举报