Python基础数据类型

一:数据类型分类及介绍

1.数字(int)

数字主要是用于计算用的,主要的方法有:

bit_length() 当十进制用二进制表示时,最少使用的位数

2.布尔值(bool)

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

 真   1   True。数字非0为真,字符串非空为真。

 假   0   False。   

2.字符串(str)

2.1 字符串的索引与切片

索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。

切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾尾)。

2.2 字符串的方法

  capitalize() 首字母大写,其他字母小写

  upper() 全部大写

  lower()  全部小写

  swapcase() 大小写反转

  title()  非字母的元素隔开的每个单词首字母大写

  center(self, width, fillchar=None)   居中,总长度自己设定,默认填充物None

  startswith(self, prefix, start=None, end=None) 判断字符串开头,支持切片,返回bool

  endswith(self, suffix, start=None, end=None) 判断字符串结尾,支持切片,返回bool

  strip(self, chars=None)  去除首尾的空格,制表符\t,换行符。不仅仅是去除空格....chars可以去除指定收尾字符

  rstrip(self, chars=None)  去除尾部

  lstrip(self, chars=None)   去除首部

  split(self, sep=None, maxsplit=-1) 切割成列表,可以指定切割次数

   join(self, iterable) 列表转换字符串   '_'.join(list) 指定转换后拼接的字符

  replace(self, old, new, count=None)  字符串替换,可以指定替换次数

  find(self, sub, start=None, end=None) 通过元素找索引,找不到返回-1

  index(self, sub, start=None, end=None) 通过元素找索引,找不到会报错

  format(self, *args, **kwargs) 格式化输出,优点可以重复使用

   res='我叫{0}今年{1}岁,爱好{2},我依然叫{0}'.format('egon',18,'male')

  res='{name} {age} {sex}'.format(sex='male', name='egon', age=18) 

  len(*args, **kwargs) 公共方法,获取元素个数

  count(self, sub, start=None, end=None) 获取指定元素个数,支持切片

  print(name.isalnum()) #字符串由字母或数字组成,判断返回bool

  print(name.isalpha()) #字符串只由字母组成,判断返回bool

  print(name.isdigit()) #字符串只由数字组成,判断返回bool

  encode(self, encoding='utf-8', errors='strict')  转化str为bytes类型,使用utf-8编码

  bytes.decode('utf-8') 将utf-8的bytes类型转化为str

  a = 1

  b = 5

  a,b = b,a 分别赋值

3.列表(list)

列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]

列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

3.1 列表的增加

  append(self, p_object) 在最后添加

  insert(self, index, p_object) 按照索引插入

  extend(self, iterable) 迭代添加元素

3.2 列表的删除

  pop(self, index=None) 按照索引去删除,有返回值,返回删除的元素

  del  按照索引删除,可以切片删除,没有返回值

  remove(self, value) 按照元素删除

  clear(self) 清空列表

3.3 列表的更改

直接通过索引更改或者切片更改(按照索引删除,迭代添加)

3.4 列表的查询

通过索引查询,或者for 循环

注意:再循环一个列表时,不要对列表进行删除的动作(改变列表元素的个数动作),会改变列表的下标,会出错

3.5列表常用方法

  sort(self, key=None, reverse=False) 排序,reverse 反排序

  reverse(self) 按照当前顺序反排序

4.元组(tuple)

  元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")

  如果元组里面只有一个元素并且没有逗号隔开,那么他的数据类型与该元素一致。

5.字典(dict)

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

3.1字典的增

  dic['a'] = 'b'  有则覆盖,无则添加

  setdefault(self, k, d=None) 有则不变,无则添加

  3.2字典的删除

  pop(self, k: _KT) 删除对应的值,有返回值且返回值可以自己指定

  popitem(self) 随机删除,有返回值

  clear()  清空字典

3.3 字典的改

  将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中

3.4字典的查

  value1 = dic["name"] # 没有会报错

  value2 = dic.get("djffdsafg","默认返回值") # 没有可以返回设定的返回值

3.5 常用方法

  items() 函数以列表返回可遍历的(键, 值) 元组数组。

  keys() 函数以列表返回一个字典所有的键

  values() 函数以列表返回字典中的所有值。

3.6 字典的循环

for i in dic:  循环key值

for i,j in dic:  分别循环key 和values

注意:再循环时,不能改变字典

6.集合(set)

集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

  去重,把一个列表变成集合,就自动去重了。

  关系测试,测试两组数据之前的交集、差集、并集等关系。

1,集合的创建。

  set1 = set({1,2,'barry'})

  set2 = {1,2,'barry'}  大括号

  print(set1,set2) # {1, 2, 'barry'} {1, 2, 'barry'}

2,集合的增。

  set1 = {'alex','wusir','ritian','egon','barry'}

  set1.add('aaa')

  update:迭代着增加

3,集合的删。

  set1.remove('alex') # 删除一个元素

  set1.pop() # 随机删除一个元素

  set1.clear() # 清空集合

  del set1 # 删除集合

4,集合的其他操作:

  4.1 交集。(&  或者 intersection)

  4.2 并集。(| 或者 union)

  4.3 差集。(- 或者 difference)

  4.4 反交集。 (^ 或者 symmetric_difference)

  4.5 子集与超集

  set1 = {1,2,3}

  set2 = {1,2,3,4,5,6}

print(set1 < set2)

print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。

print(set2 > set1)

print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。

5,frozenset不可变集合,让集合变成不可变类型。

s = frozenset('barry')

print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

二、python小数据池与深浅copy

1.小数据池

  python中 有小数据池的概念。

  int -5 ~256 的相同的数全都指向一个内存地址,节省空间。

  str:s = 'a' * 20 以内都是同一个内存地址

  只要字符串含有非字母元素,那就不是一个内存地址

2.深浅copy

对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,

指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性

深copy 对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

copy()  浅copy

import copy

copy.deepcopy() 深copy

posted @ 2018-04-03 14:36  且听风吟ops  阅读(100)  评论(0)    收藏  举报