初识python - 数据类型
什么是数据类型?
我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。Python中常用的数据类型包括多种,今天我们暂只讲4种, 数字、字符串、布尔类型、列表。
字符串是写代码中最常见的,python内存中的字符串是按照:unicode 编码存储。对于字符串是不可变。
>>> name = "Alex Li" #双引号 >>> age = "22" #只要加引号就是字符串 >>> age2 = 22 #int >>> >>> msg = '''My name is Alex, I am 22 years old!''' #我擦,3个引号也可以 >>> >>> hometown = 'ShanDong' #单引号也可以
-
字符串私有方法:
-
大写.upper()
-
小写 .lower()
-
替换 .replace()
-
分割 .split()
-
去空格 .strip()
-
判断是否是数字 isdecimal()
-
更改编码方式 encode()
-
以...连接字符 .join()
-
格式化输出 .format()
-
判断以...开头 startwith ()
-
判断以... 结尾 endswith()
-
那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
msg = "My name is PangHu , I'm 22 years old!"
多引号什么作用呢?作用就是多行字符串必须用多引号
msg = ''' 今天我想写首小诗, 歌颂我的同桌, 你看他那乌黑的短发, 好像一只炸毛鸡。 ''' print(msg) 字符串拼接
数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行”相加”和”相乘”运算。
>>> name 'Alex Li' >>> age '22' >>> >>> name + age #相加其实就是简单拼接 'Alex Li22' >>> >>> name * 10 #相乘其实就是复制自己多少次,再拼接在一起 'Alex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex Li'
注意,字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接
>>> type(name),type(age2) (<type 'str'="">, <type 'int'="">) <type 'str'=""><type 'int'="">>>> <type 'str'=""><type 'int'="">>>> name <type 'str'=""><type 'int'="">'Alex Li' <type 'str'=""><type 'int'="">>>> age2 <type 'str'=""><type 'int'="">22 <type 'str'=""><type 'int'="">>>> name + age2 <type 'str'=""><type 'int'="">Traceback (most recent call last): <type 'str'=""><type 'int'=""> File "", line 1, in <type 'str'=""><type 'int'="">TypeError: cannot concatenate 'str' and 'int' objects #错误提示数字 和 字符 不能拼接
2 整型(int)
在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int
Python2中:有int/long型
Python3中:只有int型
>>> a= 2**64
>>> type(a) #type()是查看数据类型的方法
<type 'long'="">
<type 'long'="">>>> b = 2**60
<type 'long'="">>>> type(b)
2.1 整数除法
Python2:除法保留整数
Python3:除法保留所有
3 布尔值(bool)
布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断
但其实你们并不明白对么? let me explain, 我现在有2个值 , a=3, b=5 , 我说a>b你说成立么? 我们当然知道不成立,但问题是计算机怎么去描述这成不成立呢?或者说a< b是成立,计算机怎么描述这是成立呢?
没错,答案就是,用布尔类型
>>> a=3
>>> b=5
>>>
>>> a > b #不成立就是False,即假
False
>>>
>>> a < b #成立就是True, 即真
True
可以根据条件结果来干不同的事情啦呀!比如
if a > b print(a is bigger than b ) else print(a is smaller than b )
其他类型转换成布尔值为False:
str: "" int: 0 list : list() tuple : tuple() dict: dict() set: set()
4 列表(list)
如果要把全班的人名在内存里存下来,用上面的字符串类型可以做到,但取的时候不方便。
names = "PangHu,LuLu,Jack,Rachel,Mack..."
你print(names)它打印的是所有人的信息,如果想取出Rain,没办法(可以用字符串切割方式,但是很麻烦)。此时,用列表就比较合适。
>>> names = ["Alex","Jack","Rain","Rachel","Mack"]
>>> names[2] #为何names[2]就能取出Rain?
'Rain'
因为列表的是通过下标来标记元素位置的。 下标从0开始,每添加一个元素,就自动+1
列表私有功能:
4.1 增
-
追加 append
-
插入 insert
4.2 删
-
弹出 pop #返回一个值,可以拿到
-
清空 clear
-
删除 remove
4.3 其他
-
反转 reserve
-
排序 sort
-
继承 extend
5 元组(tuple)
无私有功能
6 字典(dict)
-
有序字典
from collections import orderedDict
info = OrderedDict()
info['k1'] = 123
info['k2'] = 456
print(info.keys())
print(info.values())
print(info.items())defaultDict 默认字典 可以给字典value设置一个默认值
1 常用字典功能
-
获取所有键 .keys
-
获取所有值 .values
-
获取所有键值 .items
-
查询键 .get
-
有则更新,无则添加 update
-
删除 pop
7 集合(set)
7.1集合功能
-
添加 add
-
删除 discard
-
交集 intersection
-
查重 union
-
差集 difference
-
对称差集 symmetric_difference
-
批量添加 update
8 公共功能
公有功能\数据类型 | 字符串 | 整型 | 布尔值 | 列表 | 元组 | 字典 | 集合 |
---|---|---|---|---|---|---|---|
len | √ | 无 | 无 | √ | √ | √ | √ |
索引 | √ | 无 | 无 | √ | √ | √ | 无 |
切片 | √ | 无 | 无 | √ | √ | 无 | 无 |
步长 | √ | 无 | 无 | √ | √ | 无 | 无 |
for | √ | 无 | 无 | √ | √ | √ | √ |
删除 | 无 | 无 | 无 | √ | 无 | √ | 无 |
修改 | 无 | 无 | 无 | √ | 无 | √ | 无 |