资讯专栏INFORMATION COLUMN

[Learning Python] Chapter 5 Numeric Types

yuxue / 1954人阅读

摘要:,可以用十进制十六进制八进制二进制来表示。由实数虚数组成。,在中,八进制可以以开头,但是在中,不能以开头,一定要以或者开头,位的运算表示位向左移动表示位向右移动表示或运算表示运算表示异或运算两者不同为,相同为可以用方法计算二进制数有多少位。

1, 在Python 2.x 中。Python的integer,有两种类型,normal和long。Normal通常是32位的。Long表示无限精度,由计算机决定。如果数字后面有l或者L,这会强制将该数字转换为long类型。但其实,用户不必这样做,因为Python会在数值溢出的情况下自动将normal的类型转换为long类型。
然而,在Python 3.x中,normal和long合并了,没有区别了。此时不可再在数字尾部加入l或者L了。

2,integer可以用十进制(decimal)、十六进制(hexadecimal)、八进制(octal)、二进制(binary)来表示。后面三种在编程领域很常见。
十六进制(hexadecimal):以0x或者0X开头,接0~9或者A~F,大小写没有关系;
八进制(octal):以0o或者0O开头,接0~7;
二进制(binary):以0b或者0B开头,接0~1.
想要将数字转换为十进制的,可以用int(数值)方法:如int(0o100)=64;
想要将数字转换为八进制的,可以用oct(数值)方法,如oct(0x40)= 0o100;
想要将数字转换为十六进制的,可以用hex(数值)方法,如hex(64)= 0x40;
想要将数字转换为二进制的,可以用bin(数值)方法,如bin(64)= 0b1000000;

3,使用如下的方法可以将integer I 转换为十六进制数、八进制数、二进制数:
hex(I)、oct(I)、bin(I)。

4,复数 complex numbers。由实数+虚数组成。其中,虚数要以j或者J结尾。复数可以没有实数部分。

5, str()和repr()这两个方法都是可以将数值转换为字符串,不同的是,str()对用户比较友好,repr()对Python比较友好。但通常情况下,它们都是相同的。

6,在Python中,除法分为三种:
6.1,true:表示真正的除法,返回值包含小数部分,属于float型,而不管除数和被除数是什么类型的数据。跟数学里面的除法概念吻合;
6.2,classic:如果除数或被除数之一是float类型的数据,classic除法的商保留小数部分,为float型数据。而如果除数和被除数皆为integer,则商会去掉小数部分,往下取整(比如,本来是2.6,取整后为2。而本来是-2.7,取整后为-3)。
6.3,floor:这种除法的商会去掉小数部分,向小的方向靠拢。如果除数和被除数皆为integer 类型,这商也是integer。而如果除数和被除数之一是float型,则商也是float型。

7, 在Python 2.X中,/表示classic型除法,//表示floor型除法。
在Python 3.x中,/表示true型除法,//表示floor型除法。
Python 3.x已经没有classic型除法了。
ps: 如果在Python2.x中想要用到3.x的除法,可以在开头加入这样的statement:

from __future__ import division

8,为了让代码在Python2.x和3.x中都兼容,如果需要取整的操作,总是用//比较好。

9,在math模块中,提供了floor和trunc的方法。非常有用:

>>>import math
>>>math.floor(2.5)   # closest number below value
2
>>>math.floor(-2.5)
-3
>>>math.trunc(2.5)  # truncate fractional part
2
>>>math.trunc(-2.5)
-2
注意:int(I)也有truncate的功能。

10, 在Python中,实部和虚部都是float型的,虚部以j或者J结尾。

11,在Python 2.x中,八进制可以以0开头,但是在Python 3.x中,不能以0开头,一定要以0o或者0O开头!

12,位的运算bitwise operations

<<表示位向左移动
>>表示位向右移动
| 表示或运算
& 表示AND运算
^ 表示异或运算(两者不同为1,相同为0)

可以用bit_lenth()方法计算二进制数有多少位。或者len(bin())-2。因为len()会包含开头的0b这两位。

13,位的运算对Python这种高级语言不重要,如果需要做很多位运算,应该考虑低级语言如C语言。

14,round()方法可以做小数的四舍五入。如round(3.78)= 4.0, round(3,789, 2) = 3.79, round()里面的第二个参数表示的是保留多少位小数。

15,Python中的pow()函数用来计算指数。比如pow(2,4)=16, 和 2 ** 4一样的结果。

16,Python中,有自带的min和max()方法。min和max方法接受任意个多带带的参数。如min(3, 1, 2, 4)= 1.

17,Python中有sum方法,可以将一列数相加起来,但是这列数应该写在括号内作为一个sequence,比如sum((1,2,3,4)) = 10,也可以是这样的sum([1, 2, 3, 4])。

18,abs函数可以取绝对值。

19,在Python中,有三种方法可以计算平方根:

A, math.sqrt(144)   #Module
B, 144 ** .5        #Expression
C, pow(144, .5)    #Built-in

20, 在Python中,计算0.1 + 0.1 + 0.1 – 0.3 并不会得到0这个准确的值。这是由于计算机由于缺少精确度而无法精确地保存数据引起的。这个时候,decimal模块很好的解决了这个问题,通过调用decimal模块的Decimal构造函数,把数据转换为str型传入,再进行运算,结果就会返回精确的0,如下:

from decimal import Decimal
print Decimal("0.1") + Decimal("0.1") + Decimal("0.1") - Decimal("0.3")

结果:0.0
如果传入的参数仍然是float型,将无法获得这个结果。

21,使用Decimal()函数的时候。也可以设定全局精确度:

decimal.getcontext().prec = 4  #设定全局精确度为4位小数。

22,使用Fraction()函数,也可以获得和Decimal()一样的精确效果。Fraction()函数位于fractions 模块中,需要先import才可以使用。
Fraction(numerator, denominator),会自动的简化分数。
Fraction()还可以将str参数转换为分数,比如Fraction(‘.25’)=Fraction(1, 4)

23, 初始化一个空的set,使用S = set()。创建一个新的set并且赋值,使用 S = {1, 2, 3, 4}。后续若需再想set里面增加item,可以用S.add(‘…’)

24, set的运算,&表示交集,| 表示并集,- 表示差别,> 表示super set,返回布尔值。这些运算必须都是set类型。

25,union也可以用来创造出并集运算。Union里的参数可以是list,可以是set,还可以是tuple。
{1,2, 3}.union([3, 4])
{1,2, 3}.union({3, 4})

26,intersection也可以用来计算交集,参数可以是list,可以是set,还可以是tuple。

27,issubset()函数可以判断某set是否是令一个set的子集

28,set和tuple的区别:

Set在后续可以增加值,减少值,但tuple不能
Set里面的值必须是互不相同的,但tuple可以接受相同的值。
Set可以内嵌tuple,不能内嵌list,dictionary。

http://blog.csdn.net/u0103675...

29,set comprehensions

{x ** 2 for x in [1, 2, 3, 4]}
{16, 1, 4, 9}

30, set可以用来过滤掉重复的item:

>>> L = [1, 2, 1, 3, 2, 4, 5]
>>> set(L)
{1, 2, 3, 4, 5}

31,set的运算:

>>> engineers = {"bob", "sue", "ann", "vic"}
>>> managers = {"tom", "sue"}
>>> "bob" in engineers # Is bob an engineer?
True
>>> engineers & managers # Who is both engineer and manager?
{"sue"}
>>> engineers | managers # All people in either category
{"bob", "tom", "sue", "vic", "ann"}
>>> engineers - managers # Engineers who are not managers
{"vic", "ann", "bob"}
>>> managers - engineers # Managers who are not engineers
{"tom"}
>>> engineers > managers # Are all managers engineers? (superset)
False
>>> {"bob", "sue"} < engineers # Are both engineers? (subset)
True
>>> (managers | engineers) > managers # All people is a superset of managers
True
>>> managers ^ engineers # Who is in one but not both?
{"tom", "vic", "ann", "bob"}
>>> (managers | engineers) - (managers ^ engineers) # Intersection!
{"sue"}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38303.html

相关文章

  • [Learning Python] Chapter 7 String Fundamentals

    摘要:此时不要在这里面的右边加入,否则会被当做。,这个式子可以将二进制数,转换为十进制的。需要注意的是,需要加上,表示。下面,表示括号内的第一个参数,表示第二个参数。 1, 字符串的连接concatenate有两种方式:A:直接写在一起: >>> title = Meaning of Life # Implicit concatenation >>> title Meaning of L...

    baoxl 评论0 收藏0
  • [Learning Python] Chapter 4. Introducing Python Ob

    摘要:可以连接,可以重复可以将两个连接在一起可以重复任意次数如中,号作用于表示连接,而作用于数字表示加法,操作符的作用会根据其作用的对象而有所适应。中的对象被分类为和。针对的核心类型,数字字符串和都是的。 1, >>> len(str(3)) 结果是1,len不能对数字求值,需要先将数字转换为str 2, math模块中,有许多工具可以用来计算数学问题。使用math模块,先导入math: i...

    CHENGKANG 评论0 收藏0
  • [Learning Python] Chapter 6: The Dynamic Typing In

    摘要:,可以对对象进行自动地回收。如下,这种情况的发生表示随改变了,应该意识到这个问题。代表引用相同则返回,否则,返回。这个判断会更加严格。的值为的两个量,其必定也是。,和指向了不同的。,由于会存储一些小的和小的以方便重新利用。 1, 在Python中,类型永远跟随object,而非variable。Variable没有类型。 2,在下面的三个式子中,a首先被赋予整形3,再被赋予字符串‘sp...

    lily_wang 评论0 收藏0
  • [Learning Python] Chapter 8 Lists and Dictionaries

    摘要:,如何一个方法一使用方法二使用方法方法三使用方法,按升序或降序排列表示升序表示降序和会返回。而仅能删除一个。使用方法可以避免这样的错误导致程序出现。,在中,的方法返回的不再是。不过可以使用强迫它们组成一个。 Chapter 8 Lists and Dictionaries1, list的concatenation 和 repetition 操作: >>> [1, 2, 3] + [4,...

    gekylin 评论0 收藏0

发表评论

0条评论

yuxue

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<