Python之数据类型

一、数值


1、int 整数

2、float 浮点数包含小数

3、bool 布尔值 true false,条件是否成立

二、字符串


1、string 字符串

    *定义:使用单引号、双引号或者是三引号包裹的数据,有引号就是字符串。

    *区别:单引号包裹里可以显示双引号或三双引号(单行) 

                双引号包裹里可以显示单引号或三单引号(单行) 

                三单引号包裹里可以显示双引号或单引号(多行) 

                三双引号包裹里可以显示单引号或双单引号(多行)

str1="I'm fei"

str2='我想说:"八嘎"'

str3='''"你想干啥?" '''

str4=""" '你管得着吗?'"""

注:两个重点 1、单、双引号为单行,三单、双引号可多行。

                        2、双引号(无论个数)里可以输出显示单引号(无论个数),单引号(无论个数)里可以输出显示双引号(无论个数)。

  *编码:

            1、意义:把二进制翻译成我们能看懂的字符

            2、演变:1、ASCII==》》Gb2312==>>gbk1.0==>>gb18030

                             2、ASCII==>>unicode==>>uft-8

            python2.x 默认ascii 

            python3.x默认Unicode


    * 转义符  \    

                    *   字符串中使用\(反斜杠)来表示转义,也就是说\后面的字符不再是它原来的意义。

                        如;n在串里表示字母n,\n在串里就成为了换行

                        java里有不能转的,Python不太清楚,知道以后再改

                    *    取消转义,在字符串的最前面加上字母r来加以说明 

s1 = r'\'hello, world!\''

s2 = r'\n\\hello, world!\\\n'

print(s1, s2, end='')

      *运算:  1、+:拼接,两个字符串拼成一个

                    2、*:乘几就把被乘数复制几份然后拼接在一起

                    3、+=:a+=b  ab值相加,然后再赋值给a

                    4、in:r=a in b  b里是否包含a ,结果为布尔值

                    5、[]:切片  r=a[1]  从字符串中取出指定位置的字符(下标运算)

                    6、[x:y:z]:字符串切片(从指定的开始索引到指定的结束索引)x=起始位置(默认0),y=结束位置(默认len(str),顾头不顾尾,

                        不算这个位置的数据)z= 步长(默认1),xyz可以为负数,但是逻辑有点乱,就先不说了,基本上就是倒叙的意思

        *    方法

str1 = 'hello, world!'

# 通过内置函数len计算字符串的长度

print(len(str1)) # 13

# 获得字符串首字母大写的拷贝

print(str1.capitalize()) # Hello, world!

# 获得字符串每个单词首字母大写的拷贝

print(str1.title()) # Hello, World!

# 获得字符串变大写后的拷贝

print(str1.upper()) # HELLO, WORLD!

# 从字符串中查找子串所在位置

print(str1.find('or')) # 8

print(str1.find('shit')) # -1

# 与find类似但找不到子串时会引发异常

# print(str1.index('or'))

# print(str1.index('shit'))

# 检查字符串是否以指定的字符串开头

print(str1.startswith('He')) # False

print(str1.startswith('hel')) # True

# 检查字符串是否以指定的字符串结尾

print(str1.endswith('!')) # True

# 将字符串以指定的宽度居中并在两侧填充指定的字符

print(str1.center(50, '*'))

# 将字符串以指定的宽度靠右放置左侧填充指定的字符

print(str1.rjust(50, ' '))str2 = 'abc123456'

# 检查字符串是否由数字构成

print(str2.isdigit()) # False

# 检查字符串是否以字母构成

print(str2.isalpha()) # False

# 检查字符串是否以数字和字母构成

print(str2.isalnum()) # True

str3 = ' jackfrued@126.com '

print(str3)

#获得字符串修剪左右两侧空格之后的拷贝

print(str3.strip())



三、[ ] 列表(数组)


1、定义  list1=["aa",2.0,5,7,100],以中括号包裹,以逗号分隔,起始位置从0开始

2、创建 

list1 = [1, 3, 5, 7, 100]

print(list1) # [1, 3, 5, 7, 100]

# 乘号表示列表元素的重复

list2 = ['hello'] * 3

print(list2) # ['hello', 'hello', 'hello']


3、增

        *    append    在原有列表的尾部追加数据 如:list1.append(200)

        *    insert(x,y)根据坐标x把数据y插入到原有数据

        *    +=    在原有列表的尾部追加数据 如:list1 += [1000, 2000]

        *    extend()在原有列表的尾部追加数据,也可以理解为合并两个数组 如:list1.extend([1000, 2000])

        *    生成式    f = [x for x in range(1, 3)]  在1到3的范围内从1开始,依次赋值给x(第二个x),到3结束(不包括3),然后由x根据规则,依次添加到列表里

                            f=[x*2 for x in range(1,10)]     在1到10的范围内从1开始,依次赋值给x(第二个x),到10结束(不包括10),然后x乘以2,依次添加到列表里

                            f=[ x+y for  x  in  'ABCDE'  for  y  in  '1234567' ]  ,整体规则和上面差不多,可以理解为对'ABCDE'和'1234567'两个列表进行双重for循环后的两个值相加,然后添加到list里;

                            f=(x**2 for x in range(1,10)) ,规则同上,不同的是,它生成的是一个容器,不会占用内存,但从容器里取数据的时候会增加额外时间,

4、删

        *    remove(x)    删除数据x,如:list1.remove("3") ,无返回值

        *    pop(x)    删除坐标x上的数据 如:list1.pop(0)   ,有返回值,为被删除的数据

        *    clear()    清空列表

5、改    

        *    list[x]=300    通过对列表对应坐标重新赋值的操作,达到修改的目的

        *    list = []    重新整体赋值

        *    sorted(list)    根据字母表顺序排序,不对原list产生变化,生成一个新的list

        *    sorted(list, reverse=True)   根据字母表顺序排序,可以指定正序/倒序,对原list不影响

        *    sorted(list, key=len)    根据列表里每个元素的长度由低到高排序,对原list不影响

        *    list.sort(reverse=True)    在list上根据字母表顺序排序,直接改变当前list数据

6、查

        *   循环查找    for  elem  in  list:   以单个元素为基准循环list, 输出 elem  元素,也就是

# 通过for循环遍历列表元素

for elem in list1:

print(elem)

                               for   index    in     range( len):以坐标为基准循环指定长度的范围,依次输出index坐标,然后再去列表中拿数据list[index]

# 通过循环用下标遍历列表元素

for index in range(len(list1)):

print(list1[index])

                                for  index,elem  in  enumerate(list1):以坐标和元素为基准,输出元素和坐标

# 通过enumerate函数处理列表之后再遍历可以同时获得元素索引和值

for index, elem in enumerate(list1):

print(index, elem)

        *     [x:y:z]        切片,从x坐标开始,到y坐标结束(不包含这个坐标的值),以y步长为规律,截取成一个新的list(和字符串的一样)y为正数,从左到右,y为负数,从右往左


四、()元组


1、定义:与列表类似,是一种用来存储多个数据的容器类型,定义后不可修改(可以使用+号拼接两个元组组成一个新的元组,变相修改)

2、创建:t=('陌',34,True,'保定'),使用()大括号包裹,逗号分隔,下标从0开始。

3、取值:elem = t [1],根据下标取值

4、类型转换:

        *    list(t):元组转换成列表,t参数为元组数据

        *    tuple(list):列表转换成元组,list参数为列表数据

5、优势:

        *    由于元组具有创建后不可修改的特性,天然就拥有了再线程安全上的优势。

        *    元组在创建时间和占用的空间上面都优于列表。

6、内置函数

        *    cmp(tuple1, tuple2):比较两个元组元素。

        *    len(tuple):计算元组元素个数。

        *    max(tuple):返回元组中元素最大值。

        *    min(tuple):返回元组中元素最小值。

        *    tuple(seq):将列表转换为元组。

五、{}集合


1、定义:使用{}大括号包裹,逗号分隔,元素不可重复,一种可以无序且不可重复的存储数据的数据类型,可以进行交集、并集、差集等运算。

2、使用场景:

        *    去重:如列表去重

        *    关系测试:判断数据是否存在 交集,并集,差集  等关系。

3、类型:

        *    set:可变集合

        *    frozenset:不可变集合(这个先忽略

2、创建:

        *    set1={1,2,3,3,3,2}:粗暴的拿大括号包裹若干不同元素

        *    set1=set(....):构造器语法创建,如:set2=set(range(1,10))  ,set3=set((1,2,3,3,2,1))

        *    推导式语法:set4 = { num for num in range(1,100) if num % 3  ==  0  or  num%5 == 0}

        *    s.copy():复制生成一个新的集合。

3、增

        *    s.add(x):如果集合s中不存在元素x,则将元素x添加到集合s中。如果存在x,则不添加,不会报错

        *    a.update(b,c,d...):把bcd等可迭代的参数(可以使集合也可以是其他,重点是可迭代)添加到a集合里,并去重,可以理解为,abcd取并集后赋值给了a,参数可以是1个,无返回值

4、删

        *    s.clear():删除集合s中的所有元素。

        *    s.discard(value):移除集合s中的value元素。若value元素存在,则移除,不存在也不报错。

        *    s.remove(value):移除集合s中的value元素。若value元素存在,则移除,不存在则报错(产生KeyError异常)。

        *    s.pop():随机移除集合s中的一个元素并返回该元素。若集合为空则报错(产生KeyError异常)

5、运算

        *    交集: set1.intersection(set2)    /    set1&set2    相同的部分

        *    并集:set1.union(set2)    /    set1|set2    不同的部分

        *    差集:set1.difference(set2)    /    set1-set2    set1在set2中不同的部分,可以理解为set1、set2分别去掉相同的数据,然后把set1返回,set2不管了

        *    对称差:    set1.symmetric_difference(set2)     取set1和set2中不同的数据,赋值给set1  函数改变集合set1元素。无返回值

                             set1.symmetric(set2)    /    set1^set2   取set1和set2中不同的数据,生成一个新集合  函数不改变集合的元素,返回一个新生成的集合

        *    子集:set2.issubset(set1)    /    set2<=set1  set2是否是set1的子集,返回布尔值

        *    超集:set1.issuperset(set2)    /    set1>=set2    set1是否是set2的父集,返回布尔值

六、{ :,:}字典


1、定义:一种可变容器模型,且可存储任意类型对象。用{}大括号包裹,元素间用逗号分隔,每个元素均为键值对,键值对由:冒号连接,表现形式为 key:value 。如:d = {key1 : value1, key2 : value2 }

2、创建

        *    scores={'陌':100,'王':'狗日的,'狄仁杰':82}:字面量语法,大括号包裹,逗号分隔,元素为键值对,键值用:冒号连接

        *    items1=dict(one=1,two=2,three=3,four=4):构造器语法

        *    dict( zip ( ['a','b','c'] , '123')):通过zip函数将两个序列压成字典

        *    items3={ num : num**2  for  num  in   range(1,10)}:推导式语法

3、增

        *    update(冷面=67, 方启鹤=85):在原字典尾部追加键值对数据

4、删

        *    scores.popitem():返回并删除字典中的最后一对键和值。

        *    scores.pop('陌',100):删除字典给定键 key 所对应的值,返回值为被删除的值。如果key没有对应的值,就返回100这个给定的默认值

        *    scores.clear():清空字典

5、改

        *    scores['狄仁杰'] =20:修改字典中对应键的值

6、查

        *    scores['狄仁杰'] :通过键可以获取字典中对应的值

        *    scores.get('狄仁杰'):通过键可以获取字典中对应的值(与上面的方法不同的是,get方法可设默认值,如果没找到key,就返回默认值,如:scores.get('苍老师'),18)

        *    dict.keys():以列表返回一个字典所有的键

        *    dict.values():以列表返回字典中的所有值

注:1、键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

        2、值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

七、工厂函数


1、说明:

                *    起名为函数,那他就应该是函数,而不是一个类对象,只不过一般的函数返回的都是变量或者计算结果,工厂函数有点特殊,它返回的是类的实例

                *    可以生产出属性相同的对象

2、分类

                *    type():查看类型

                *    int(),long(),float(),complex(),bool(),str(),unicode(),list(),tuple(),dict(),dict(),set()(可变集合),frozenset()(生成不可变集合):生成指定类的实例

八、空  None

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

推荐阅读更多精彩内容

  • 不怕自己没能耐,就怕自己以为有能耐。 上一篇:python简介、特点、解释器种类 下一篇:pip工具安装库 pyt...
    写给明天的自己阅读 504评论 0 4
  • 序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的数据结构(也称为容器)。 序列(列表、元组和字符...
    又见倾心阅读 247评论 0 0
  • 数据类型 整型整型的范围:无限大整型的定义:直接赋值给变量( x = 90)整型的运算:整型之间的除法运算结果是精...
    射手再见蓝天575阅读 185评论 0 0
  • 这也是一种欢喜 不愿明说 只期盼不经意间的偶遇 人群中只一眼便看到你 似乎是发光体 目光一直追随着你 你忽地一瞥 ...
    十三少的jian阅读 185评论 1 2
  • 公司门前有棵很大的枫树,上周看着她枫叶正红,周一却已是一地的落红了,周二不期然飘来了雪,加拿大的冬天悄然来了。“山...
    薄凉默如初阅读 176评论 0 0