数据类型2

1.数字

Python内置支持复数类型及其运算,并且形式与数学上的复数完全一致。

>>> x = 3 + 4j                 #使用j或J表示复数虚部

>>> y = 5 + 6j

>>> x + y                      #支持复数之间的加、减、乘、除以及幂乘等运算

(8+10j)

>>> x * y

(-9+38j)

>>> abs(x)                     #内置函数abs()可用来计算复数的模

5.0

>>> x.imag                     #虚部

4.0

>>> x.real                     #实部

3.0

>>> x.conjugate()              #共轭复数

(3-4j)

Python 3.6.x支持在数字中间位置使用单个下划线作为分隔来提高数字的可读性,类似于数学上使用逗号作为千位分隔符。

在Python数字中单个下划线可以出现在中间任意位置,但不能出现开头和结尾位置,也不能使用多个连续的下划线。

>>> 1_000_000

1000000

>>> 1_2_3_4

1234

>>> 1_2 + 3_4j

(12+34j)

>>> 1_2.3_45

12.345

2.字符串

在Python中,没有字符常量和变量的概念,只有字符串类型的常量和变量,单个字符也是字符串。使用单引号、双引号、三单引号、三双引号作为定界符(delimiter)来表示字符串,并且不同的定界符之间可以互相嵌套。

Python 3.x全面支持中文,中文和英文字母都作为一个字符对待,甚至可以使用中文作为变量名。

除了支持使用加号运算符连接字符串以外,Python字符串还提供了大量的方法支持格式化、查找、替换、排版等操作。

>>> x = 'Hello world.'                  #使用单引号作为定界符

>>> x = "Python is a greatlanguage."   #使用双引号作为定界符

>>> x = '''Tom said, "Let'sgo."'''     #不同定界符之间可以互相嵌套

>>> print(x)

Tom said, "Let's go."

>>> x = 'good ' + 'morning'             #连接字符串

>>> x

'good morning'

>>> x = 'good ''morning'                #连接字符串,仅适用于字符串常量

>>> x

'good morning'

>>> x = 'good '

>>> x = x'morning'                      #不适用于字符串变量

SyntaxError:

invalid syntax

>>> x = x + 'morning'                   #字符串变量之间的连接可以使用加号

>>> x

'good morning'

3.python运算符及表达式

在Python中,单个常量或变量可以看作最简单的表达式,使用除赋值运算符之外的其他任意运算符和函数调用连接的式子也属于表达式。

运算符优先级遵循的规则为:算术运算符优先级最高,其次是位运算符、成员测试运算符、关系运算符、逻辑运算符等,算术运算符遵循“先乘除,后加减”的基本运算原则。

虽然Python运算符有一套严格的优先级规则,但是强烈建议在编写复杂表达式时使用圆括号来明确说明其中的逻辑来提高代码可读性。


(1)+运算符除了用于算术加法以外,还可以用于列表、元组、字符串的连接,但不支持不同类型的对象之间相加或连接。

>>> [1, 2, 3] + [4, 5, 6]          #连接两个列表

[1, 2, 3, 4, 5, 6]

>>> (1, 2, 3) + (4,)               #连接两个元组

(1, 2, 3, 4)

>>> 'abcd' +'1234'                #连接两个字符串

'abcd1234'

>>> 'A' + 1                        #不支持字符与数字相加,抛出异常

TypeError:

Can't convert 'int'

object to str implicitly

>>> True + 3                       #Python内部把True当作1处理

4

>>> False + 3                      #把False当作0处理

3

(2)*运算符除了表示算术乘法,还可用于列表、元组、字符串这几个序列类型与整数的乘法,表示序列元素的重复,生成新的序列对象。字典和集合不支持与整数的相乘,因为其中的元素是不允许重复的。

>>>

True * 3

3

>>>

False * 3

0

>>>

[1, 2, 3] * 3

[1,

2, 3, 1, 2, 3, 1, 2, 3]

>>>

(1, 2, 3) * 3

(1,

2, 3, 1, 2, 3, 1, 2, 3)

>>>

'abc'

* 3

'abcabcabc'

(3)运算符/和//在Python中分别表示算术除法和算术求整商(floor division)。

>>> 3 / 2                    #数学意义上的除法

1.5

>>> 15 // 4                  #如果两个操作数都是整数,结果为整数

3

>>> 15.0 // 4                #如果操作数中有实数,结果为实数形式的整数值

3.0

>>> -15//4                   #向下取整

-4

(4)%运算符可以用于整数或实数的求余数运算,还可以用于字符串格式化,但是这种用法并不推荐。

>>>789 % 23                       #余数

7

>>>123.45 % 3.2                 #可以对实数进行余数运算,注意精度问题

1.849999999999996

>>>'%c, %d' % (65, 65)       #把65分别格式化为字符和整数

'A,

65'

>>>

'%f,%s'% (65, 65)         #把65分别格式化为实数和字符串

'65.000000,65'

(5)**运算符表示幂乘:

>>> 3 ** 2                    #3的2次方,等价于pow(3, 2)

9

>>> pow(3,2, 8)              #等价于(3**2)

% 8

1

>>> 9 ** 0.5                  #9的0.5次方,平方根

3.0

>>> (-9) ** 0.5               #可以计算负数的平方根

(1.8369701987210297e-16+3j)

4.关系运算符

Python关系运算符最大的特点是可以连用。使用关系运算符的一个最重要的前提是,操作数之间必须可比较大小。

>>> 1 < 3 < 5                    #等价于1 < 3 and 3 < 5

True

>>> 3 < 5 > 2

True

>>> 1 > 6 < 8

False

>>> 1 > 6 < math.sqrt(9)         #具有惰性求值或者逻辑短路的特点

False

>>> 1 < 6 < math.sqrt(9)         #还没有导入math模块,抛出异常

NameError:

name 'math' is not defined

>>> import math

>>> 1 < 6 < math.sqrt(9)

False

>>> 'Hello' > 'world'              #比较字符串大小

False

>>> [1, 2, 3] < [1, 2,4]          #比较列表大小

True

>>> 'Hello' > 3                    #字符串和数字不能比较

TypeError:

unorderable types: str()

> int()

>>> {1, 2, 3} < {1, 2, 3,4}       #测试是否子集

True

>>> {1, 2, 3} == {3, 2, 1}         #测试两个集合是否相等

True

>>> {1, 2, 4} > {1, 2,3}          #集合之间的包含测试

False

>>> {1, 2, 4} < {1, 2, 3}

False

>>> {1, 2, 4} == {1, 2, 3}

False

4.成员测试运算符in

成员测试运算符in用于成员测试,即测试一个对象是否为另一个对象的元素。

>>> 3 in [1, 2, 3]                #测试3是否存在于列表[1, 2, 3]中

True

>>> 5 in range(1, 10, 1)          #range()是用来生成指定范围数字的内置函数

True

>>> 'abc' in

'abcdefg'            #子字符串测试

True

>>> for iin(3, 5, 7):           #循环,成员遍历

   print(i,

end='\t')

3  5  7 

�5.集合运算符

集合的交集、并集、对称差集等运算借助于&、|、^来实现,而差集则使用减号运算符实现(注意,并集运算符不是加号)。

>>> {1, 2, 3} | {3, 4, 5}          #并集,自动去除重复元素

{1, 2, 3, 4, 5}

>>> {1, 2, 3} & {3, 4,5}          #交集

{3}

>>> {1, 2, 3} ^ {3, 4, 5}          #对称差集

{1, 2, 4, 5}

>>> {1, 2, 3} - {3, 4, 5}          #差集

{1, 2}

6.逻辑运算符

逻辑运算符and、or、not常用来连接条件表达式构成更加复杂的条件表达式,并且and和or具有惰性求值或逻辑短路的特点,当连接多个表达式时只计算必须要计算的值。

另外要注意的是,运算符and和or并不一定会返回True或False,而是得到最后一个被计算的表达式的值,但是运算符not一定会返回True或False。

>>> 3>5 and a>3              #注意,此时并没有定义变量a

False

>>> 3>5 or a>3               #3>5的值为False,所以需要计算后面表达式

NameError:

name 'a' is not defined

>>> 3<5 or a>3               #3<5的值为True,不需要计算后面表达式

True

>>> 3 and 5                  #最后一个计算的表达式的值作为整个表达式的值

5

>>> 3 and 5>2

True

>>> 3 not in [1, 2, 3]       #逻辑非运算not

False

>>> 3 is not 5               #not的计算结果只能是True或False之一

True

>>> not 3

False

>>> not 0

True

Python还有赋值运算符=和+=、-=、*=、/=、//=、**=、|=、^=等大量复合赋值运算符。

Python不支持++和--运算符,虽然在形式上有时候似乎可以这样用,但实际上是另外的含义,要注意和其他语言的区别。

>>> i = 3

>>> ++i                            #正正得正

3

>>> +(+3)                          #与++i等价

3

>>> i++                            #Python不支持++运算符,语法错误

SyntaxError:

invalid syntax

>>> --i                            #负负得正,等价于-(-i)

3

>>> ---i                           #等价于-(-(-i))

-3

>>> i--                            #Python不支持--运算符,语法错误

SyntaxError:

invalid syntax

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

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,723评论 0 10
  • 字符串 字符串默认只能写在一行内,分成多行将会报错。如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。 le...
    注定只是过客阅读 193评论 0 0
  • ▲ 點上方藍字免費訂閱 安全。稳定。有效。 最暖金线莲 什么是春季感冒? 春季万物生发,气温开始逐渐回暖,但也是感...
    无名亦无形阅读 233评论 0 0
  • 小白是我们圈子里少有的奇葩,长得高高大大,人也帅气,是个很能聊天的男生,跟他在一起几乎没有冷场过,人是挺好,就是花...
    游走星宿阅读 655评论 0 1
  • 今天开始读严歌苓老师的《小姨多鹤》,是借别人的,据说已经被拍成电视连续剧,多鹤是由孙俐扮演的,我不禁再次感念于自己...
    非常道_faae阅读 252评论 1 16