python整数类型在每一台计算机上的取值范围是一样的_第四章、Python数据类型

1、前面第三章有说过了Python有的数据类型,在开始介绍各种数据类型之前,我们先要知道Python的一个内置函数 type() ,用以查询变量所赋值的数据类型。

>>> a=1

>>>type(a)

>>> b='abc'

>>>type(b)

2、整型(int 型)

整型就是整数的意思,在数学里整数包括有正整数、0 、负整数,Python中同样如此。

>>> a,b,c=-1,0,1

>>>type(a)

>>>type(b)

>>>type(c)

3、浮点型 (float 型)

浮点型通俗的说就是小数点型,Python 中的小数有两种书写形式:1.3, 1.3e4(等价于1.4*104)

>>> a,b=1.3,1.3e4

>>>type(a)

>>>type(b)

4、布尔型(bool型)

布尔型表示真假值,Python中用两个常量 True 和 False 表示真假。通常用于条件判断和循环语句中

>>> 3>2True>>> 3<2False

注:

1) True 和 False 是 Python 中的关键字,当作为 Python 代码输入时,一定要注意字母的大小写,否则解释器会报错。

>>> trueTraceback (most recent call last):

File"", line 1, in NameError: name'true' isnot defined>>>True

True

2) 布尔类型可以当做整数来对待,即 True 相当于整数值 1,False 相当于整数值 0

>>> True+1

2

>>> False+1

1

3) 布尔值可以用 and、or和 not运算

and是与运算,只有所有都为True,结果才是True;

or 是或运算,只要其中有一个为True,结果就是True;

not 是非运算,结果取反。

5、字符型 (str 型)

字符串是以单引号 '' 或双引号 "" 括起来的任意字符集,字符的内容可以包含字母、数字、标点、特殊符号、中文、日文等全世界的所有文字。

1) Python 字符串中的双引号和单引号没有任何区别。当字符串中需要出现 ’或者“ 时需要使用转义字符 \

>>> a,b='123',"123"

>>>type(a)

>>>type(b)

2)字符串拼接

两个字符串相加,就相当于把两个字符串拼接起来,用 +号实现连接。

>>> "py" + "thon"

'python'

3)索引和切片

字符串是由多个字符组成的集合,通过索引找到对应的字符,由左往右的第一个字符对应的索引值是 0 ,依次加 1 位。

>>> a='hello world'

>>> a[0]'h'

>>> a[4]'o'

如何通过字符得到对应索引值?这时候就使用到 index() 函数

>>> a.index('e')1

通过索引得到字符的过程,称之为切片。

>>> a='hello world'

>>> a[1:] #得到从索引值1开始到最末尾的字符'ello world'

>>> a[1:4] #得到从索引值1开始到索引值4之前的字符,不含4的值'ell' #即1<=x<4

>>> a[:4] #得到从索引值4之前的字符,不含4的值'hell'

>>>a[:] #得到从所有的字符'hello world'

4)字符串的一些基本操作>>> a,b='qw','qwe'

>>> a+b #字符串拼接'qwqwe'

>>> 'a' ina #判断某个字符串是否存在于另一个字符串内,存在为真,否为假

False>>> 'q' ina

True

#每个字符在计算机内都是有编码的,也就是对应着一个数字,即在ASCII中的值。根据数字大小进行比较>>>max(a) #提取字符串中的最大值,'w'

>>>min(a) #提取字符串中的最小值'q'

>>>cmp(a,b) #两个字符串进行比较,也是首先将字符串中的符号转化为对一个的数字,然后比较。如果返回的数值小于零,说明第一个小于第二个,等于0,则两个相等,大于0,第一个大于第二个。-1 #在字符串的比较中,是两个字符串的第一个字符先比较,如果相等,就比较下一个,如果不相等,就返回结果。直到最后,如果还相等,就返回0。位数不够时,按照没有处理

>>> ord('a') #ord()函数,返回某个字符(注意,是一个字符,不是多个字符组成的串)所对一个的ASCII值(是十进制的),字符a在ASCII中的值是97,空格在ASCII中的值是32。97>>> chr(97) #chhr()函数,根据ASCII值得到对应字符

'a'

>>>len(a) #得到字符串的长度2>>>type(a) 查询变量类型

6、列表(List)

python中用方括号 [ ] 表示一个list,方括号里面可以是各种数据类型。

>>> a=[1,'q',True]>>>type(a)

1)列表也有类似字符串一样的索引和切片,方法一样

>>> a=[1,23,2]>>> a[0]1

>>> a.index(1)0

2)反转:字符串倒过来。

反转,不是在“原地”把原来的值倒过来,而是新生成了一个值,那个值跟原来的值相比,是倒过来了,原来的值还存在于变量中

反转有两种方式:

>>> a=[1,23,2]>>> a[::-1] #方式一

[2, 23, 1]>>>a

[1,23,2]>>>list(reversed(a)) #方式二

[2, 23, 1]

3)基础操作

>>> a.append("like") #增加列表元素,追加到尾部>>>a

[1, 23, 2, 'like']>>> b=['q', 'w']>>>a.extend(b) #b中的所有元素加入到a中>>>a

[1, 2, 3, 'q', 'w']>>>b

['q', 'w']>>> a = "python"

>>> hasattr(a,'__iter__')

False>>>b = [1,2]>>> hasattr(b,'__iter__')

True

#hasattr()判断一个字符串是否是可迭代的,是返回True,否返回False。其判断本质就是看该类型中是否有__iter__函数。用dir()查询整型、字符串、列表中,谁有__iter__。>>>dir(str)

['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']>>>dir(list)

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

#id()函数查看变量在内存的位置编码>>>id(a)140571421973464

>>>id(b)140571377764352

4)insert(i, x)函数,含义是将元素 x 插入到索引值是 i 的元素前面。索引值是从0开始的。

>>> a=['a','b','c','d']>>> a.insert(2,'q')>>>a

['a', 'b', 'q', 'c', 'd']>>> a.insert(9,'w')>>>a

['a', 'b', 'q', 'c', 'd', 'w']

注:当 i 的值大于 list 中的最大索引值时,元素 x 自动插入 list 末尾。

5)remove(x)函数,删除列表中的x元素。注:当列表中含有多个不紧邻的x元素时,只删除第一个x元素,若相邻的就一起删除

>>> a=['a', "a",'b', 'c', 'd', 'w']>>> a.remove('a')>>>a

['a', 'b', 'c', 'd', 'w']>>> a=['a','b','a', 'c', 'd', 'w']>>> a.remove('a')>>>a

['b', 'a', 'c', 'd', 'w']

6)pop(i)函数,删除指定索引值 i 对应的元素,并将删除结果返回,若不写 i , 默认删除最后一个元素。

>>> a=['b', 'a', 'c', 'd', 'w']>>>a.pop()'w'

>>>a

['b', 'a', 'c', 'd']>>> a.pop(2)'c'

7)reverse()函数,将列表反转,等同于 list[ : :-1]

>>> a=['a','b','c']>>>a.reverse()>>>a

['c', 'b', 'a']>>> a[::-1]

['a', 'b', 'c']

8)sort()函数,对原列表进行排序,语法:

list.sort(cmp=None, key=None, reverse=False) #python 2.x

list.sort(key=None,reverse=False)#python 3.x

key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。默认值None

reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

>>> a=['qwe','rty','uiop']>>>a.sort()>>>a

['qwe', 'rty', 'uiop']>>> a.sort(key=len)>>>a

['qwe', 'rty', 'uiop']>>> a.sort(key=len,reverse=True)>>>a

['uiop', 'qwe', 'rty']>>> b=[45,5,7,3]>>>b.sort()>>>b

[3, 5, 7, 45]

此外,还有一个内置函数sorted()用于排序

sorted(iterable, cmp=None, key=None, reverse=False) #python 2.x

sorted(iterable, key=None, reverse=False) #python 3.x

注:两函数的的区别是, sort( )函数时是在原列表上进行排序,无返回值;而sorted( )函数是返回一个新的list,不在原来的list上进行操作,调用其返回一个排好序的list。

>>>b

[3, 5, 7, 45]>>> c=sorted(b)>>>c

[3, 5, 7, 45]

9)split()函数,指定分隔符对字符串进行分割,分割后的字符串以逗号“,”隔开。

语法:str.split(str="",num=string.count(str))

str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

num -- 分割次数。分隔出 num+1 个子字符串,默认为 -1, 即分隔所有。

>>> a="hello world to you"

>>>a.split()

['hello', 'world', 'to', 'you']>>>a'hello world to you'

>>> a.split(" ",1)

['hello', 'world to you']>>> a.split(" ",2)

['hello', 'world', 'to you']

10)join() 函数用于将序列中的元素以指定的字符连接生成一个新的字符串。

语法:str.join(sequence)

str:指定字符 sequence:序列名

>>> a,b=(1,2,3,4,5),['a','b','c','d']>>> "".join(b)'abcd'

>>> "".join(a)

Traceback (most recent call last):

File"", line 1, in TypeError: sequence item0: expected string, intfound>>> print(" ".join('%s' %id for id ina))1 2 3 4 5

>>> " ".join('%s' %id for id ina)'1 2 3 4 5'

注:若序列中元素包含数字,则join()会报错。需遍历序列中元素,将之转化成字符串。这样就能成功输出数字结果。

11)remove()函数,删除列表中的某个元素

>>> b=[1,2,3]>>> b.remove(2)>>>b

[1, 3]

Python的序列类型:字符串、列表、元组

7、元组(tuple)

Python 中元组用圆括号 () 括起来的,其中的元素之间用逗号隔开。

1)元组的创建

>>> a=() #创建空元组>>>type(a)

>>> b=(1)>>>type(b)

>>> b=(1,) #创建元组时,元素的数量必须大于1,只有1个元素是整型int,不是元组型>>>type(b)

>>> c=1,'q',[1,2] #多种数据类型组合在一起,是元组型>>>type(c)

2)元组也是序列类型,也存在索引和切片操作

>>> c=1,'q',[1,2]>>>type(c)

>>> c[1]'q'

>>> c[2]

[1, 2]>>> c[2][0] #单独提取元素中的小元素1

>>> c[2][1]2

3) 元组操作

元组中的元素不允许修改和删除,可以对元组进行拼接(+),也使用del语句来删除整个元组

>>> tup1 = (12, 34.56)>>> tup2 = ('abc', 'xyz')>>> tup1+tup2

Traceback (most recent call last):

File"", line 1, in TypeError: can only concatenate tuple (not"list") to tuple>>> tup1+tup2

(12, 34.56, 'abc', 'xyz')>>> tup3=tup1+tup2>>>tup3

(12, 34.56, 'abc', 'xyz')>>>del tup3>>>tup3

Traceback (most recent call last):

File"", line 1, in NameError: name'tup3' isnot defined

注:元组拼接的数据类型必须相同,否则拼接不成功。

>> tup1,tup2=(1,2,3),[2,'qw','c']>>> tup3=list(tup1) #数据类型强制转换,转换成列表>>> tup3+tup2

[1, 2, 3, 2, 'qw', 'c']

8、字典(dict)

Python中字典由花括号 {} 加键值对组成,每个键值对(key:value) 用冒号 : 隔开,每个对之间用逗号(,)分割,格式如下所示:

dict ={key1 :value1,key2 :value2,key3 :value3 }

键是唯一的不能重复,所以可以用数字,字符串或元组充当,而用列表就不行。值不唯一。

1)字典创建

>>> a={} #创建空字典>>> a["key1"]=12#给字典中添加键值对>>>a

{'key1': 12}>>> b=dict(key1=32,key2=43) #利用dict()函数创建字典>>>b

{'key2': 43, 'key1': 32}>>> c=(['q','w'],[1,2])>>> c=dict(c) #dict()函数加元组构成字典>>>c

{'q': 'w', 1: 2}

以上方法得到的还是原来的字典,即在字典上操作

Python 字典 fromkeys() 函数,创建一个新字典

语法: dict.fromkeys(seq, value)

以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。

参数

seq -- 字典键值列表。

value -- 可选参数, 设置键序列(seq)的值。

返回值

该方法返回一个新字典。

>>> d= {}.fromkeys(("q","w"),(1,2)) #>>>c

{'q': 'w', 1: 2}>>>d

{'q': (1, 2), 'w': (1, 2)}

2)基本操作:

len(d),返回字典(d)中的键值对的数量

d[key],返回字典(d)中的键(key)的值,若键不存在,则报错

d.get(key),得到键key的值,若键不存在,则返回None

d[key]=value,将值(value)赋给字典(d)中的键(key)

del d[key],删除字典(d)的键(key)项(将该键值对删除)

d.clear() 函数,清空字典

key in d,检查字典(d)中是否含有键为key的项

str(d),输出字典,以可打印的字符串表示。

>>> a={1:12,2:13,3:14}>>> a.[4]

File"", line 1a.[4]^SyntaxError: invalid syntax #dict[key]与dict.get(key)的区别>>> a.get(4)>>>

>>> print(a.get(4))

None

copy()函数,复制新的变量 dict.copy()

>>> q=d.copy() #copy后在新变量上操作不影响原来的变量>>>q

{'q': (1, 2), 'w': (1, 2)}>>>id(d)139753898228264

>>>id(q)139753942536832

>>> w=d #在原来变量上操作>>>id(w)139753898228264

3)setdefault() 函数和 get()类似, 得到键的值,如果键不存在于,则添加键并将值设为默认值None。

语法:dict.setdefault(key,default=None)

>>>a

{1: 12, 2: 13, 3: 14}>>> a.setdefault(4)>>>a

{1: 12, 2: 13, 3: 14, 4: None}>>> a.setdefault(5,16)16

>>>a

{1: 12, 2: 13, 3: 14, 4: None, 5: 16}

4)items()和iteritems()函数

items()函数,将字典以列表形式返回,列表中的元素是由字典中的键和值组成的元组

>>> b={1: 12, 2: 13, 3: 14, 4: None, 5: 16}>>>b.items()

[(1, 12), (2, 13), (3, 14), (4, None), (5, 16)]>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}>>>b.items()

[(1, 12), (3, 14), (4, None), (5, 16), (7, 13)]

iteritems()函数,将字典返回成迭代器,是一个'dictionary-itemiterator'类型,不过这种迭代器类型的数据不能直接输出,必须用list()转换一下,才能看到里面的真面目。

>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}>>>b.items()

[(1, 12), (3, 14), (4, None), (5, 16), (7, 13)]>>> c=b.iteritems()>>>c

>>>list(c)

[(1, 12), (3, 14), (4, None), (5, 16), (7, 13)]

5)keys()和values()函数

>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}>>>b.keys() #提取字典中的键

[1, 3, 4, 5, 7]>>>b.values() #提取字典的值

[12, 14, None, 16, 13]

6)pop()和popitem()函数

pop(key[,default])函数 ,删除字典给定键 key 及对应的值,返回值为被删除的值,key必须写

key: 要删除的键值

default: 如果没有对应key值,返回default值,[]内为可选

popitem()函数,随机删除字典中一对键和值。并返回该键值对。若字典为空,就报出 KeyError 异常。

>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}>>>b.popitem()

(1, 12)>>> b.pop(7)13

7) has_key() 函数,判断字典中是否存在某个键,等同于 "key in dict"

>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}>>> b.has_key(1)

True>>> 1 inb

True

9、集合(set)

集合创建用花括号 { } 或者 set() 函数。

注意:

创建一个空集合必须用set() 而不是 { },因为 { } 是用来创建一个空字典。

集合中的元素无序,不可重复。

不推荐使用花括号{}创建集合,因为Python难以分辨是字典还是集合

set()函数可以创建一个无序不重复的元素集,这个函数至多可以传一个参数,否则会报错;可以传比如串一个字符串或者一个列表,只含有一个参数

>>> a=set("A",12)

Traceback (most recent call last):

File"", line 1, in TypeError:set expected at most 1 arguments, got 2#实例中传了2个参数,所以会报错>>> a=set("Asdad")

>>> a=set(["["a","b"]","q","w","e"])

File "", line 1

a=set(["["a","b"]","q","w","e"])

^

SyntaxError: invalid syntax

>>> a=set(['["a","b"]',"q","w","e"]) #单引号和双引号配合使用,不能单引号嵌套单引号,或者双引号嵌套双引号

1)list()和set()能够实现两种数据类型之间的转化。

2)基本操作

set.add(元素) 向set集合中添加元素

set1.update(set2) 将集合set2更新到集合set1中

>>> a.add("q")>>>aset(['A', 1, 2, 'q'])>>> b=set()>>>b.update(a)>>>bset(['A', 1, 2, 'q'])>>>c.update(a)

Traceback (most recent call last):

File"", line 1, in AttributeError:'dictionary-itemiterator' object has no attribute 'update'# 注得先创建集合才能使用update,否则会报错,字典也是一样,得先创建出存在的字典

set.pop()函数,任意选一个元素删除并将这个值返回。pop()不能有参数,否则报错。此外,如果set是空的了,也报错。

set.remove(obj)函数,删除指定元素obj,该元素必须是set中的元素,否则就报错。

set.discard(obj)函数,删除指定元素obj,obj如果是set中的元素,就删除,如果不是,就什么也不做。

set.clear()函数,清空集合中的所有元素,得到空集合。

3) set()创立的集合都是可原处修改的集合,即里面的元素可变;frozenset()创立的集合不能在原处修改,里面的元素不可变。

>>> a=frozenset()>>>type(a)

4)判断集合A与集合B的关系

>>> a=set(['q', 'w', 'e', 'r'])>>> b=set(['q', 'w'])>>> b

True>>>b.issubset(a) #或者用这种方法,判断c是否是a的子集

True>>>a.issuperset(c) #判断a是否是c的超集

True>>> a |b #并集,可以有两种方式,结果一样set(['q', 'w', 'e', 'r'])>>>a.union(b)set(['q', 'w', 'e', 'r'])>>> a &b #交集,两种方式,等价set(['q', 'w'])>>>a.intersection(b)set(['q', 'w'])>>> a -b #A相对B的差(补)set('e', 'r'])>>>a.difference(b)set(['e', 'r'])>>> c=set(['q', 'w','s']) #A、B的对称差集>>>a.symmetric_difference(c)set(['s', 'r', 'e'])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值