数据类型

不可变数据(四个):Number(数字)、String(字符串)、Tuple(元组)、Sets(集合);可哈希

可变数据(两个):List(列表)、Dictionary(字典)。不可哈希


字符串,列表,元祖的索引与切片

索引:例如
  str='abcdefg'
  str[0]='a'
  str[-1]='g'

切片:例如
  str='abcdefg'
  str[0:4]='abcd' #切片:顾首不顾尾
  str[:-1]='abcdef'
  str[:]='abcdefg'
  str[::2]='aceg'
  str[::-1]='gfedcba' #str[首:尾:步长]


公共方法

  len();#计算str包含多少字符,list多少元素,dict多少键值对,Tuple多少元素。

  .count();#查找字符,元素的出现次数。

  type();#判断数据类型,()中输入需要判断的数据。


str常用操作方法

  str.capitalize();#字符串首字母大写。

  str.upper() ; #字母全部大写。

  str.lower();#字母全部小写。

  str.isupper();#是否字母全大写。

  str.islower();#是否字母全小写。

  str.swapcase();#字母大小写反转。

  str.title();#字母标题化 每个隔开(特殊字符或数字)的单词首字母大写。

  str.center();#字符居中 需要填入参数 width(宽度) 默认fillchar(填充物)为None,可以自己设置填充物。

  str.expandtabs();#与Tab(\t)使用 补充位数。

  str.startswith();#检测字符串是否以'什么'为开头,返还True,False。

  str.endwith();#检测字符串是否以'什么'为结尾,返还Ture,false。

  str.find(); #查找字符串中的元素,返回此元素的下标(索引),找不到返还-1,可切片规定寻找范围。

  str.index(); #str.find()类似,如果找不到会报错*

  str.strip();#去除前后的空格 如果要去除前面的空格使用str.lstrip(),去除后面的空格使用str.fstrip()。str.strip('需要删除的元素')默认为空格可以更改。

  str.split();#str.split('拆分的字符',num)进行拆分把一个字符串转化为一个列表,被拆分的内容不存在。如果设置了num 则切分成num+1次(str>>>list)*

  str.rsplit(); # 从右往左分 默认split是从左往右分

  str.replace();#替换 str.replace('替换内容','新的内容',次数(默认为全部替换))。

  str.isalnum();#字符串是否由数字或字母组成。

  str.isalpha();#字符串只由字母组成。

  str.isdigit();#字符串只由数字组成。

  str.isspace();#字符串只由空格组成。


int常用操作方法

  int.bit_length();#把数字转化为二进制最小的位数。


list列表—[]的增删改查

增:

  list.append();#在原有列表的基础上在末尾增加元素;直接打印无返还值。
  list.insert();#在列表中指定位置插入元素,需要输入两个参数插入的位置和需要插入的内容
  list.extend();#迭代增加,()中必须是可迭代对象,增加内容为最小元素。

删:

  list.pop();#按索引删除,如果不加索引默认删除最后一个;有返回值 返回删除的值。
  list.remove();#按元素去删,无返回值。
  list.clear();#清空列表。
  del();#删除列表,也可以切片删除部分。

改:

  list['需要更改内容的索引']='要更改的内容'#直接通过索引去改;
  list.['需要更换切片的内容']='需要更改的内容'(增加的list中以最小元素拆分放入),#先将你需要替换的内容拿出来在放入你需要更改的内容,你需要更改的内容以最小元素分开放入列表中。

查:

  list.[索引或切片];#利用索引和切片查找元素。
  for i in list:
    print(i)#查列表中所有的元素打印出来。
  list.index('元素');#通过元素找索引。

排序:

  list.sort(cmp=None, key=None, reverse=False)
    cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
    key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)
  list.reverse();#列表的反转。

list补充:

去除多余嵌套的列表(迭代)

def f(x):
  ret=[]
  for b in x:
    if isinstance(b,list):
  for a in f(b):
    ret.append(a)
  else:
    ret.append(b)
  return ret


元祖type-()

  元祖 只读列表,可循环查询,可切片,如果里面嵌套可修改内容,可以更改嵌套里可修改的内容。

  (连接对象str).join(可迭代对象);# 将可迭代对象每一个都加上连接对象成为一个新的字符串,可以将可迭代对象转化为字符串。(list;tuple>>>str)*************

  range();#生成数列(起始值(如果是0可以省略),终止值(不包括本身),步长(默认为0))。

  元祖  如果元祖里面只有一个元素且不加,那此元素是什么类型,就是什么类型。


字典dict-{}的增删改查

dict(映射类型,键值对)
dict key(键必须是不可变数据类型) 可哈希
dict 优点:
  1.二分查找去查询。
  2.存储大量的关系型数据。
  3.无序的(python3.5前)。

增:

  dict['键'] =值 # 如果dict中没有此键,就添加,如果有键,就覆盖。
  dict.setdefault() # ('键','值,(值如果不写默认为None)')如果dict中有此键则不执行任何操作不做任何改变。
  dict.formkeys(seq,'value(不填默认为None))');# Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值

删:

  dict.pop('键') # 直接按照键去删除,有返回值,返回的是键值对的值,如果dict中没有此键,则会报错(解决方法:dict.pop('键','提示字符')如果加了提示字符在dict中没有此件时返回你输入的提示字符)。
  dict.popitem() # 随机删除(python3.5之前没有排序随机删除python3.6后有排序删除最后一个键值对),有返回值,返回的是键值对。
  dict.clear() # 清空dict。
  dict.del() # 删除整个dict,如果('键')删除键值对,如果dict中没有此键则会报错,无返回值。
  del dict["key"] # 删除此键值对

改:

  dict['键'] =值 # 输入以有的键赋给新值就是更改键值对。
  dict2.update(dict) # 把dict所有的键值对更新到dict2中,原dict无变化。

查:

  dict['键'];# 查找dict的对应的值
  dict.keys();# dict中的键,放在一个列表中。
  dict.values();# dict中的值,放在一个列表中。
  dict.items();# dict中的键值,在一个列表中,但键值放在一个元祖中隔开。
  dict.get();# dict.get('查找的内容','提示字符') 如果没有此键返回提示字符。
  sorted();# sorted('dict.keys;dict.values;dict.items')返回一个新的list,不在原函数更改;list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
  dict.setdefault();# Python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。(也有增的功能)

补充:

  在循环列表和字典中 不要直接删除原列表和字典中的内容,达不到相应的要求容易报错。


集合set-{}的增删改差

  set集合:可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复。set1=set({1,2,3});set1={1,2,3}。

  set.add('需要添加的内容');# 直接添加。(集合是无序的 随机添加到位置)
  set.update(需要添加的内容);# 迭代增加 把需要添加的内容化为最小元素分开放入集合中。(集合是无序的 随机添加到位置)

  set.pop();# 随机删除 ,有返回值。
  set.remove();# 按照元素删除,如果没有会报错。
  set.clear();# 清空集合 表现方式为set()。
  set.del();# 删除整个集合。

  # 因为set中元素不可变所以不能更改

  for i in set:print(i);

计算

  交集:'&' 或者使用 set1.intersection(set2);
  并集:'|'或者使用 set1.union(set2);
  反交集:'^'或者使用 set1.symmetruc.difference(set2);
  差集:'-'或者使用 set1.difference(set2);#set1独有的set2没有的拿出来;
  子集:'<'或者使用ste1.issubset(set2);#说明ste1是set2的子集;返回布尔值;
  超集:'>'或者使用ste1.issuperset(set2);#说明ste1是ste2的超级;返回布尔值;

类型转换

  list>>>set
  set = ste(list)
  set>>>list
  list=list(set)

转化不可变数据类型

  frozenset();# frozenset() 返回一个冻结的集合,冻结后集合只能查看不能再添加或删除任何元素.比如列表、字典、元组等等


分类 数字,字符串 小数据池(地址)

  # 数字的范围 -5 -- 256 如果数字范围在此,创建多个变量都等于他,用的地址是一样的。
  # 字符串:
  1.不能含有特殊字符;(如果字符串中包含特殊字符,不管多长多段都不会共用一个)。
  2. S*20 还是同一个地址,S*21以后都是两个地址。(S为一个字节)
  # 除了数字与字符串 没有 小数据池的概念。