python基础(2)

python基本数据类型

1.综述

python里面共有六大标准数据类型,其中不可变的数据类型有 Number,String,Tuple三种,可变的数据类型为 List, Dictionary ,Set 三种,下面就一个一个介绍这些数据类型。

2. Number 类型

(1)数值类型:int ,float,bool,complex 四种,其中整型只有 int 一种,没有 long 等数据类型,python3 中的整型是没有限制大小的,可以当作 long 使用。浮点型可以用浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250),complex的实部a和虚部b都是浮点型,例如complex(a,b)= a + b j

(2)可以使用 del 语句删除对象或者对象的引用,即你先前定义了3个变量,有一个不想用了,就可以使用del语句来删除。

(3)内置数据类型的强制转换:int(x) 将x转换为一个整数,complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式

(4)Number的除法有两个运算符,’/‘ 返回值是float,’//‘ 返回值是 int(返回向下取整后的结果),例如 7 // 2 =3,17 / 3 =5.666666666666667,当计算时既有 int,又有 float,则最终结果是 float,例如 7.0 / 2 = 3.5

(5)一些数学函数和随机函数这里就不介绍了,用到的时候查一下就可以了。

3. String 类型

(1)’ + ‘ 字符串连接符,把两个字符串连在一起;’ * ‘ 字符串复制符,把字符串复制一遍;’ in / not in‘ 成员运算符,判断某个子串是否在给定字符中,返回值是个bool值。

(2)字符串切片操作:变量[头下标 : 尾下标] 截取字符串中的一部分,经常用到的操作
头下标是第一个想要的元素,尾下标是第一个不想要的元素,所以上述操作就是左闭右开的
如果从头往尾数,则下标从0开始,从尾往头数,则下标从 -1 开始。
有了切片操作,很多地方循环就不再需要了。Python的切片非常灵活,一行代码就可以实现很多行循环才能完成的操作

(3)字符串格式化:将一个值插入到一个有字符串格式符 %s 的字符串中

print( "我叫 %s 今年 %d 岁!"  %('小明'10))
输出结果: 我叫 小明 今年 10 岁!

注意一下书写格式,另外注意一下代表的意义,下面只列出我认为常用的几个。
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%f 格式化浮点数字,可指定小数点后的精度

(4)python中字符串是不可以改变的,例如 A [1] = 0 就会报错

4. List 类型

(1)列表就可以理解为c++中的数组,二者都是通过下标来访问的,二者的区别由下面两点构成

  • c++ 中 array 创建之前是需要指定长度的(动态数组除外),但 python 中的 list 允许不断地在现有列表上添删元素,即长度是可以动态改变的。
  • c++ 中 array 元素只能是同一数据类型,,但 python 中的 list 的元素可以是不同的数据类型,甚至可以 list 相互嵌套

(2)list 访问操作和前面说的字符串的切片操作完全一样,区别就是加了一个参数步长。

(3)list 内置了很多方法,例如 append,clear等,就不用盲目记忆了,多用几次就学会了。

(4)list的创建:list1 = [1, a, 3.4, 5 ],用[ ]括起来的就是 list

5. Tuple 类型

(1)元组和列表的基本相同,唯一的区别就是元组里的元素是不可改变的,而列表里的元素是可以改变或者删除的

(2)tuple的创建:tup1 = (‘Google’, ‘Runoob’, 1997, 2000) ,与list的区别就是使用的是()

(3)元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用

(4)元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

(5)因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义。

6.Dictionary 类型

(1)dictionary 是 python 特有的结构,和其他语言中的 map 类似,使用键-值(key-value)存储,具有极快的查找速度。

(2)之所以叫 dictionary 是因为他的实现原理就跟字典一样,假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。第二种方法是先在字典的索引表里查这个字对应的页码,然后直接翻到该页,找到这个字,无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢,dict就是第二种实现方式。

(3)dict 和 list 的区别:

  • 查找和插入的速度极快,不会随着key的增加而增加
  • 需要占用大量的内存,内存浪费多
    所以,dict是用空间来换取时间的一种方法,多用在需要高速查找的很多地方

(4)牢记的第一条就是 dict 的 key 必须是不可变对象,因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash),要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key。

(5)dict 的底层就是哈希,所以出现映射/函数是第一反应就是dict 数据结构,dict 是无序的,故没有下标这一说法,但是可以通过key来快速寻找。

(6)字典的创建:d = {key1 : value1, key2 : value2 }

7. Set 类型

(1)set 和 dict 类似,也是一组 key 的集合,但不存储 value。由于key不能重复,所以,在set中,没有重复的值,重复元素在set中自动被过滤。

(2)使用大括号 { } 或者 set() 函数创建集合,创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。创建格式:parame = {value01,value02,…} 或者 set(value)

(3)出现 set 这个数据结构的原因就是方便一些集合的操作,例如集合的交并补的等,会简单那很多

8. 数据结构总结

(1)有序的数据结构:list,tuple 和 string ,故他们都叫做序列,都可以通过下标来访问,剩下的数据结构都是无序的,dict 和 set 是由哈希来实现的,故虽然无序,也可以快速查找

(2)不可变的数据结构:string ,number ,tuple,其他的都是可变的,因为提出这些结构就是为了解决一些问题,不可变局限性就很大了,可以简单的理解复杂的数据结构都是可变的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值