Python基础之基本数据类型

2018-09-07  本文已影响0人  时间仍在o是我们飞逝

前言:基本类型是需要掌握的,是编程基础。不理解没关系,死记住就好了,就像你小时候背9*9乘法表也不需要为什么。

Python的基本数据类型有 数字,字符串,列表,元组,字典,集合

一:数字

Python3 数字类型支持 int(长整型)、float(浮点型)、bool、complex(复数)。其中的bool为True(等同于数字1),或者False(等同于数字0),可以进行数值运算;
使用type()函数和isinstance()可以查看对象类型:

print(type(1), type(1.5), type(True), type(5 + 3j))
print(isinstance(1,int),isinstance(True,int),isinstance(True,bool))
print(True + 1,False+1)

结果为:

<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
True True True
2    1
数值运算

①加法用 +,减法用 -,乘法用 *,乘方用**;
②关于除法有两种:\ 和 \\,前者表示结果为浮点数,后者表示结果为整型

print(9/2,9//2,10/3,10//3)

结果为

4.5   4   3.3333333333333335   3

二:字符串

用单引号 ' 或双引号 " 括起来的任意文本即为字符串,字符串中的特殊字符要使用 \ 来转义。

①转义

字符串中含有如特殊字符需要转义,比如 \' , \" ,\n,\t等,他自身\ 也需要转义。

print("I'm \n    \"ok\"  \n  \\  \n  \\")

输出

I'm 
    "ok"  
  \  
  \

使用 r ' '可以使字符串中的字符不转义,原样输出。

print(r"I'm \n    \"ok\"  \n  \\  \n  \\")

输出:

I'm \n    \"ok\"  \n  \\  \n  \\
②格式化

三种方式 % f, format:

name = 'tom'
mobile = 1388888888
print('%s 的手机号码是 %s' % (name, mobile))
print('{} 的手机号码是 {}'.format(name, mobile))
print(f'{name} 的手机号码是 {mobile}') #3.6支持

输出为

tom 的手机号码是 1388888888
tom 的手机号码是 1388888888
tom 的手机号码是 1388888888
③常见方法

find(),join (),split (),replace (),strip ()等等,遇到再翻资料;

三:布尔值

布尔值本质上0(False)和1(True),运算有and,or,not

print(True and True)  # and是与运算,两边都为True,最终结果才是True
print(True or False)  # or是或运算,一边为True,最终结果即是True
print(not False)  # not是非运算,取反

结果为

True
True
True

最后,在判断条件中,None,"",(),[],{},0均代表Fasle:

if not '' or None or () or [] or {} or 0 or False:
    print("均为假")

输出

均为假

因为 ' ' or None or () or [] or {} or 0 or False ,整体为False,所以not False为True,才能执行方法体中print。or运算中全为False才能整体为False。

四:列表(list)

list为可变的,有序的集合。即长度可变,元素排列有序;但元素类型可以不一致

①定义一个list:使用 [ ]

list = ['A', 'B', 666, True]
print(len(list))  # len()得到list长度,即元素个数

②对元素操作:

通过list[n],n范围为0~len(list)-1,本例中n可取值0,1,2,3,(如果倒着数,最后一个元素下标为-1)超过这个范围会跑出数组越界 IndexError 错误

(1)获取元素,元素赋值
print(list[0])
print(list[1])
print(list[2])
print(list[3])
# print(list[4])    IndexError
print("----------")
print(list[-1])
print(list[-2])
print(list[-3])
print(list[-4])
# print(list[-5])   IndexError

list[0] = "888"  # 通过元素下标可以修改元素
print(list)

输出

A
B
666
True
----------
True
666
B
A
['888', 'B', 666, True]
(2)增减元素
# 增减元素
list.append("append")  # append追加到末尾
print(list)
list.insert(0, 'insert')  # insert插入到指定位置
print(list)
list.pop()  # 删除末尾
print(list)
#pop可以接收删除的元素并继续使用
list.pop(0)  # 删除指定位置,
print(list)

输出:

['888', 'B', 666, True, 'append']
['insert', '888', 'B', 666, True, 'append']
['insert', '888', 'B', 666, True]
['888', 'B', 666, True]
(3)list嵌套

list元素也可以是另一个list。

list = ['A', 'B', ['c', 'd']],#注意list的长度为3,看成是一个二维数组
# 拆解list为 l1,l2
l1 = ['c', 'd']
l2 = ['A', 'B', l1]
print(list)
print(l2)
#获取子list中的元素
print(list[2][1])
print(l1[1])

输出:

['A', 'B', ['c', 'd']]
['A', 'B', ['c', 'd']]
d
d

五:元组(tuple)

tuple用 ( )来表示。
tuple和list都是python内置的有序的集合,区别是前面的列表list是可变的,而元组tuple是不可变的。
既然是不可变的,那么tuple,只提供了获取元素的方法,其他类似append,pop,insert之类都是没有的。

t = (1, 2, 3) # 一旦初始化,不可更改,元素在初始化的时候定义
print(t[0])
print(t[2])
print(t[3]) #IndexError

注意:当tuple只有1个元素的时候,为了区分()是为了定义tuple还是数学意义的括号,需要加“ ,” 区分。

t = (1) # int 类型  1
print(t)
t = (1,)# tuple
print(t)

输出:

1
(1,)

当tuple内部有个可变的列表list的时候,tuple的元素是可以变化的。这和tuple的“不可变”并不冲突。

t = ('a', 'b', ['A', 'B'])
t[2][0]='X'
t[2][1]='Y'
print(t) #输出为  ('a', 'b', ['X', 'Y'])

搬个图解释:


初始状态.png 更改后.png

不可变指的是:tuple元素的引用指向不可变(可以理解为地址不改变),但是这个引用指向的内容是可变的。对应例中,t[2]的引用在初始化后就不变了,就可以可理解为t本身就不可变。至于t[2]本身内容是什么,变不变,t 本身并不关心。

六:字典dict

dict全称dictionary,是一种使用key-value ( 键值对 ) 的类型。优点,查找快。

①定义

(1):初始化的时候定义元素:
d = {'小王': 10, '大王': 20, '老王': 30}
(2) :通过key,当如指定的value:
d={}
d['小王']=10
d['大王']=20
d['老王']=30
print(d)  #输出 {'小王': 10, '大王': 20, '老王': 30}

②赋值,查询,删除

(1)根据key赋值:
d['小王']=99 
print(d)   #{'小王': 99, '大王': 20, '老王': 30}
d['小王']=88 #多次对同一个key放入不同的value,会覆盖前面的赋值
print(d)    #{'小王': 88, '大王': 20, '老王': 30}
(2)根据key查出相应的value:
age=d['小王']
print(age)
age=d['王'] #KeyError,当key不存在会抛出这个错误

当key不存在,会抛出KeyError,避免key是否存在的方法:
①‘key’in dict 判断dict中是否又该key
②dict.get('key',defaultValue),如果key不存在,可以返回None

(3) 用pop(key) 删除一个键值对
d.pop('小王')
print(d)  #{'大王': 20, '老王': 30}

dict的查找是根据key计算出value的位置。因此必须保证key是不可变的,否则每次计算出的value位置都不同,内部将会混乱。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key. dict存储的顺序和插入顺序无关,是无序的。

七:set

set和dic的区别在于,set没有储存对应的value,只有key。同时对key的要求也是唯一不可变,因此set可以看成是无序和无重复元素的集合

(1)定义

定义一个set,需要一个 list 作为参数

l = [1, 2, 3, 4]
s=set(l)
print(s) # {1, 2, 3, 4}

(2)增加,删除元素

s.add(1)
s.add(2) #重复元素会过滤掉
print(s)
s.remove(4) #删除一个元素
print(s)

输出:

{1, 2, 3, 4}
{1, 2, 3}

点赞评论走起啊~

上一篇下一篇

猜你喜欢

热点阅读