1. python 类型和运算

类型和运算 (Types and Operations)

Introducing Python Object Types

在非正式的意义上, 在 Python 中, 我们用一些东西做事情.

  • "事物" 采取像加法和串联的形式的操作。
  • "东西" 是指我们执行这些操作的对象。

从更正式的角度来看,在 Python 中,数据以对象的形式出现。

As we’ll see, everything is an object in a Python script. Even simple numbers qualify, with values (e.g., 99), and supported operations (addition, subtraction, and so on).

The Python Conceptual Hierarchy (概念上的层级结构)

  1. Programs are composed of modules. (程序由模块构成)
  2. Modules contain statements. (模块包含语句)
  3. Statements contain expressions. (语句包含表达式)
  4. Expressions create and process objects. (表达式建立和处理对象)

Built-in Types (内置类型)

  • 在 Python 中没有类型声明,运行的表达式的语法决定了创建和使用的对象的类型。
  • 一旦创建了一个对象,它就和操作集合绑定了——只能对一个字符串执行字符串操作,并在列表上进行列表相关操作。

在正式术语中, 这意味着 Python 是动态类型的, 它会自动跟踪类型, 而不是要求声明代码, 但它也是强类型的, 这意味着您可以在仅对象操作上执行对其j进行适合该类型的有效操作。

在 Python 中的每一个对象都可以分为不可变性和可变性。比如数字、字符串、元组是不可变的。不可变的:在创建后不能就地改变。

多态意味着一个操作符 (如 +) 的意义取决于被操作的对象。这将是 Python 的关键思想:不要将代码限制在特定的类型上,使代码自动适用于多种类型。

数字类型 (Numeric Types)

In Python, numbers are not really a single object type, but a category of similar types.

完整的 Python 数值类型清单:

英文 中文
Integer and floating-point objects 整数和浮点数
Complex number objects 复数
Decimal: fixed-precision objects 固定精度的十进制数
Fraction: rational number objects 有理分数
Sets: collections with numeric operations 具有数值运算的集合
Booleans: true and false 布尔类型
Built-in functions and modules: round, math, random, etc. 数值相关的内建函数和模块
Expressions; unlimited integer precision; bitwise operations; hex, octal, and binary formats 表达式; 无穷的整数精度; 按位运算; 16 进制; 8 进制; 2 进制
Third-party extensions: vectors, libraries, visualization, plotting, etc. 第三方扩展

Numeric Literals (数值常量)

Integers may be coded in decimal (base 10), hexadecimal (base 16), octal (base 8), or binary (base 2), the last three of which are common in some programming domains. Hexadecimals start with a leading 0x or 0X, followed by a string of hexadecimal digits (\(0\sim 9\) and \(A\sim F\)). Hex digits may be coded in lower- or uppercase. Octal literals start with a leading 0o or 0O (zero and lower- or uppercase letter o), followed by a string of digits (\(0\sim 7\)). In 2.X, octal literals can also be coded with just a leading 0, but not in 3.X—this original octal form is too easily confused with decimal, and is replaced by the new 0o format, which can also be used in 2.X as of 2.6. Binary literals, new as of 2.6 and 3.0, begin with a leading 0b or 0B, followed by binary digits (\(0\sim 1\)).

Floor 除法和截断除法

请注意,在 Python 3.X 中 // (floor, 向下取整) 运算: 如果是浮点型, 则结果为浮点型;否则, 它是一个整数。下面展示一些 Floor 除法和截断除法的运算:

20 // 3
6
20. // 3
6.0
from math import floor, trunc
floor(2.5)
2
floor(-2.5)
-3
trunc(2.5)
2
trunc(-2.5)
-2
5 / 2, 5 / -2
(2.5, -2.5)
5 // 2, 5 // -2
(2, -3)
5 / 2., 5 / -2.
(2.5, -2.5)
5 // 2., 5 // -2.
(2.0, -3.0)
trunc(5 / -2)
-2

进制数

0o1, 0o20, 0o377 # 八进制
(1, 16, 255)
0x01, 0x10, 0xFF  # 十六进制
(1, 16, 255)
0b1, 0b10000, 0b11111111  # 二进制
(1, 16, 255)
oct(64), hex(64), bin(64)
(‘0o100‘, ‘0x40‘, ‘0b1000000‘)

int 会将一个数字的字符串变换为一个整数,并且通过第二个参数来确定变换后的数字进制:

int(‘64‘), int(‘100‘, 8), int(‘40‘, 16), int(‘1000000‘, 2)
(64, 64, 64, 64)
int(‘0x40‘, 16), int(‘0b1000000‘, 2)
(64, 64)
eval(‘64‘), eval(‘0o100‘), eval(‘0x40‘), eval(‘0b1000000‘)
(64, 64, 64, 64)
‘{0:0}, {1:x}, {2:b}‘.format(64, 64, 64)
‘64, 40, 1000000‘
‘%o, %x, %X‘ % (64, 255, 255)
‘100, ff, FF‘

位操作

x = 1

x << 2 # Shift left 2 bits
4
x | 2   # Bitwise OR
3
x & 1  # Bitwise AND
1
X = 99
bin(X), X.bit_length()  # `X.bit_length()` 获得二进制字符串的长度
(‘0b1100011‘, 7)
round(1/3, 7)
0.3333333

使用分数小数可以避免精度的损失!

小数

from decimal import Decimal, getcontext
Decimal(0.1)
Decimal(‘0.1000000000000000055511151231257827021181583404541015625‘)
Decimal.from_float(1.25)
Decimal(‘1.25‘)

设置全局精度

Decimal(1) / Decimal(7)
Decimal(‘0.1428571428571428571428571429‘)
getcontext().prec
28
getcontext().prec = 4   # 改变全局精度
Decimal(1) / Decimal(7)
Decimal(‘0.1429‘)

分数

from fractions import Fraction
x = Fraction(1, 3)
x
Fraction(1, 3)
y = Fraction(4, 6)
y
Fraction(2, 3)
x + y
Fraction(1, 1)
x - y
Fraction(-1, 3)
x * y
Fraction(2, 9)
Fraction(‘.25‘)
Fraction(1, 4)
Fraction(‘1.25‘)
Fraction(5, 4)
Fraction(‘.25‘) + Fraction(‘1.25‘)
Fraction(3, 2)

分数还有一个 from_float 方法,并且接受一个 Fraction 作为参数。

(2.5).as_integer_ratio()
(5, 2)
f = 2.5
z = Fraction(*f.as_integer_ratio())
z
Fraction(5, 2)
x
Fraction(1, 3)
float(x)
0.3333333333333333
Fraction.from_float(1.75)
Fraction(7, 4)
a = x + Fraction(*(4.0/3).as_integer_ratio())
a
Fraction(22517998136852479, 13510798882111488)
a.limit_denominator(10)   # 取近似
Fraction(5, 3)

原文地址:https://www.cnblogs.com/q735613050/p/9833198.html

时间: 2024-10-11 04:22:47

1. python 类型和运算的相关文章

怒学Python——第二篇——类型与运算

Python支持5种数据类型,包括数字(numbers).字符串(string).列表(list).元组(tuple)和字典(dictionary).作为一门动态类型语言,不用去声明一个标示符的类型,使用的时候是什么类型会自动判定. 对于定义好的变量,若不使用该变量,可以用del删除来释放占有的资源,如 var = 10 del var Python的数字(numbers):支持int.long.float和complex,比较简单不给出示例. Python的字符串(string):如前面所说的

Python基础知识点:类型和运算

一:类型和运算 –1.1 寻求帮助: dir(obj) # 简单的列出对象obj所包含的方法名称,返回一个字符串列表 help(obj.func) # 查询obj.func的具体介绍和用法 – 1.2 测试类型的三种方法,推荐第三种 if type(L) == type([]): print("L is list") if type(L) == list: print("L is list") if isinstance(L, list): print("

C Python类型互换

从Python到C的转换用PyArg_Parse*系列函数,int PyArg_ParseTuple():把Python传过来的参数转为C:int PyArg_ParseTupleAndKeywords()与PyArg_ParseTuple()作用相同,但是同时解析关键字参数:它们的用法跟C的sscanf函数很像,都接受一个字符串流,并根据一个指定的格式字符串进行解析,把结果放入到相应的指针所指的变量中去,它们的返回值为1表示解析成功,返回值为0表示失败. 从C到Python的转换函数是PyOb

python numpy 的运算

一,基本运算 >>> a = array([1,2,3,4])>>> aarray([1, 2, 3, 4])>>> b=arange(4)>>> barray([0, 1, 2, 3])>>> a + barray([1, 3, 5, 7])>>> a - barray([1, 1, 1, 1])>>> a *barray([ 0, 2, 6, 12])>>>

JAVA-初步认识-第二章-字符类型的运算

一. 第二章知识点脉络分析 第二章的题目就叫<JAVA语言基础>,先介绍了JAVA语言中,常见的基础知识点名词:关键字,标识符,注释,常量和变量,函数和数组.到目前为止,还没有完全学完.在现有的学习过程中,我们做一个知识点脉络分析. 前三个基础知识点,关键字,标识符和注释,只是介绍了书写的规则.后面的常量和变量是一个重点,而函数和数组压根就没有进行介绍.在常量和变量这个重点知识点中,无论是常量还是变量都是数据,从而我们在定义和使用变量时,会涉及不同类型的数据,这就需要我们对数据的类型进行仔细地

python基础04 运算

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python的运算符和其他语言类似 (我们暂时只了解这些运算符的基本用法,方便我们展开后面的内容,高级应用暂时不介绍) 数学运算 >>>print 1+9        # 加法 >>>print 1.3-4      # 减法 >>>print 3*5        # 乘法 >>>print 4.5/1.5   

枚举类型或运算

1.使用枚举类型进行按位或运算,应该用2的幂(1.2.4.8等) 来定义枚举常量,以确保组按位运算结果与枚举中的各个标志都不重叠: 2.当可能需要对枚举类型进行按位运算时,应该对枚举使用FlagsAttribute /Flags属性,这样当对枚举使用按位运算时才可以解析出各个具体的枚举常量名,而不仅仅是组合值: 3.以 None 用作值为零的标志枚举常量的名称: 4.如果明显存在应用程序需要表示的默认情况,考虑使用值为零的枚举常量表示默认值. 示例代码1,不加FlagsAttribute: 1

变量、类型、运算、输出等

1.变量.类型.运算.输出等 # -*- coding: utf-8 -*- a=2 b=3 c=a+b print u'结果是=%i'%c #加u显示中文 str=unicode(s,"utf-8") #转s为中文 print str #int型和string型不能直接连接 #转换字符串连接和转换数字加减 d="1111" e=a+int(d) print "c is %s,e is %i"%(c,e) f=10 g=3 h=10/3 prin

pandas把&#39;&lt;m8[ns]&#39;类型转换为int类型进行运算

工作中经常碰到两列数据为date类型,当这两列数据相减或者相加时,得到天数,当运用这个值进行运算会报错:ufunc true_divide cannot use operands with types dtype('int64') and dtype('<m8[ns]'),我们只需要把'<m8[ns]'类型数据转换为int就可以继续运算 l = df1['计划结束时间'] - df1['计划开始时间']为: 这个数据是不能进行加减运算的 L = l.values / (24*60*60*100