Python基础之基本数据类型

前言:基本类型是需要掌握的,是编程基础。不理解没关系,死记住就好了,就像你小时候背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}

点赞评论走起啊~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,118评论 0 13
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,367评论 0 5
  • 只怕无法再有这种情怀。 17岁,什么都不怕的年纪,敢在大街上大声表白(虽然第一次失败了),失败后还敢把对方的手机打...
    S的随便用账号阅读 483评论 0 50
  • 今天晨读文章中提到让另一半成为人生搭档,就是夫妻双方能够共同分担家庭责任,把家务事动态地调节到一个平衡的状...
    小螃谢阅读 287评论 1 1
  • 浩瀚洞庭,汇九泽三江。 岳阳楼下,聚四海俊良。 至善穷理, 尚严自强。 忧乐怀天下, 千年梦想镜万方。 上下求索,...
    启宏与蛙阅读 2,845评论 56 19