位置:首页 > python变量&数据类型 >

python变量&数据类型

作者:小牛君|发布时间:2017-06-16

小牛学堂的课程大纲最近进行了再一次升级,并且同时推出Java大数据平台开发班、Python爬虫与数据挖掘班、Spark项目班、Spark大神班、机器学习算法实战班、BI数据分析实战班, 目前这类人群凤毛麟角,导致这个行业的平均薪资极高,为此小牛学堂集合了行业的诸多大牛开设对应班级,为想学习的同学提供机会!
如果想了解详细情况,请联系 今日值班讲师 或者直接加入千人QQ群进行咨询:210992946

以下是本文正文:


1.    python变量&数据类型

在内存中存储的数据可以有多种类型。

例如,一个人的年龄可以用数字来存储,他的名字可以用字符串来存储。

Python有五个标准的数据类型:

Numbers(数字)

String(字符串)

List(列表)

Tuple(元组)

Dictionary(字典)

1.1.  变量

变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。

变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,比如:

a = 1

变量a是一个整数。

t_007 = 'T007'

变量t_007是一个字符串。

Answer = True

变量Answer是一个布尔值True

在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如:

a = 123 # a是整数
print a
a = 'ABC' # a变为字符串
print a

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释):

int a = 123; // a是整数类型变量
a = "ABC"; // 错误:不能把字符串赋给整型变量

和静态语言相比,动态语言更灵活,就是这个原因。

请不要把赋值语句的等号等同于数学的等号。比如下面的代码:

x = 10
x = x + 2

如果从数学上理解x = x + 2那无论如何是不成立的,在程序中,赋值语句先计算右侧的表达式x + 2,得到结果12,再赋给变量x。由于x之前的值是10,重新赋值后,x的值变成12

最后,理解变量在计算机内存中的表示也非常重要。当我们写:

a = 'ABC'

时,Python解释器干了两件事情:

1.   在内存中创建了一个'ABC'的字符串;

2.   在内存中创建了一个名为a的变量,并把它指向'ABC'

也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:

a = 'ABC'
b = a
a = 'XYZ'
print b

最后一行打印出变量b的内容到底是'ABC'呢还是'XYZ'?如果从数学意义上理解,就会错误地得出ba相同,也应该是'XYZ',但实际上b的值是'ABC',让我们一行一行地执行代码,就可以看到到底发生了什么事:

执行a = 'ABC',解释器创建了字符串'ABC'和变量a,并把a指向'ABC'

说明: IMG_256

执行b = a,解释器创建了变量b,并把b指向a指向的字符串'ABC'

说明: IMG_257

执行a = 'XYZ',解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:

说明: IMG_258

所以,最后打印变量b的结果自然是'ABC'了。

1.2.  常量

所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:

PI = 3.14159265359

但事实上PI仍然是一个变量,Python根本没有任何机制保证PI不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量PI的值,也没人能拦住你。

最后解释一下整数的除法为什么也是精确的,可以试试:

>>> 10 / 33

你没有看错,整数除法永远是整数,即使除不尽。要做精确的除法,只需把其中一个整数换成浮点数做除法就可以:

>>> 10.0 / 33.3333333333333335

因为整数除法只取结果的整数部分,所以Python还提供一个余数运算,可以得到两个整数相除的余数:

>>> 10 % 3
1

无论整数做除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。

 

 

 

1.3.  Number数字

数字数据类型用于存储数值。

他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

当你指定一个值时,Number对象就会被创建:

var1 = 1
 
var2 = 10
 

 

Python支持四种不同的数字类型:

int(有符号整型)

long(长整型[也可以代表八进制和十六进制])

float(浮点型)

complex(复数)

 

实例

一些数值类型的实例:

int

long

float

complex

10

51924361L

0.0

3.14j

100

-0x19323L

15.20

45.j

-786

0122L

-21.9

9.322e-36j

070

0xDEFABCECBDAECBFBAEl

32.3e+18

.876j

-0470

535633629843L

-90.

-.6545+0J

-0x260

-052313172735L

-32.54e100

3e+26J

0x69

-4721885298529L

70.2E-12

4.53e-7j

长整型也可以使用小写"L",但为了避免与数字"1"混淆建议使用大写"L"来显示长整型。

 

Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型

注意:

浮点数只支持十进制

 

例:

intvar1,intvar2,intvar3=10,-0x260,0470
 
longvar1,longvar2,longvar3=51924361L,-0x19323l,-052317172735L
 
floatvar1,floatvar2,floatvar3=15.20,32.3e+18,-90.
 
complexvar1,complexvar2,complexvar3=3.14j,3e+26J,complex(3,26)
 
 
print intvar1,intvar3,intvar3
 
print longvar1,longvar2,longvar3
 
print floatvar1,floatvar2,floatvar3
 
print complexvar1,complexvar2,complexvar3
 

 

运行结果:

10 312 312

51924361 -103203 -5691471325

15.2 3.23e+19 -90.0

3.14j 3e+26j (3+26j)

 

1.4.  str字符串

一般字符串表示为

str="a1a2···an"(n>=0)

str表示一个长度为n的字符串

python字符串的下标是从0开始的,一直到n-1结束

"a1a2···an"每个字符对应的角标为"0,1,...,n-1"

使用str[头下标:尾下标],就可以截取相应的字符串(不包括尾角标的字符,即含头不含尾)

 

例:

#coding=utf-8
 
 
str = 'Hello World!'
 
print str           # 输出完整字符串
 
print str[0]        # 输出字符串中的第一个字符
 
print str[2:5]      # 输出字符串中第三个至第五个之间的字符串
 
print str[2:]       # 输出从第三个字符开始的字符串,等价于print str[2:len(str)]
 
print str * 2       # 输出字符串两次
 
print str + "TEST"  # 输出连接的字符串
 

 

运行结果:

Hello World!

H

llo

llo World!

Hello World!Hello World!

Hello World!TEST

 

1.5.  list列表

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。

列表用[ ]标识。是python最通用的复合数据类型。

列表中的值得分割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引从0开始的(跟字符串一样)。

加号(+)是列表连接运算符,星号(*)是重复操作。如下实例:

 

#coding=utf-8
 
 
tinylist = [123, 'john']
list = [
'hello', 786 , 2.23, 'world', 70.2,tinylist]
 
list[
1]='rewrites'      # list的值可以修改
 
print list               # 输出完整列表
 
print list[0]            # 输出列表的第一个元素
 
print list[1]            # 输出列表的第二个元素
 
print list[1:3]          # 输出第二个至第三个的元素
 
print list[2:]           # 输出从第三个开始至列表末尾的所有元素
 
print tinylist * 2       # 输出列表两次
 
print list + tinylist    # 打印组合的列表
 
 

 

运行结果:

['hello', 'rewrites', 2.23, 'world', 70.2, [123, 'john']]

hello

rewrites

['rewrites', 2.23]

[2.23, 'world', 70.2, [123, 'john']]

[123, 'john', 123, 'john']

['hello', 'rewrites', 2.23, 'world', 70.2, [123, 'john'], 123,   'john']

 

可以使用 del 语句来删除列表的的元素,如下实例:

list1 = ['physics', 'chemistry', 1997, 2000]
 
 
print list1
 
del list1[2]
 
 
print "After deleting value at index 2 :
 
print list1
 

 

结果:

['physics', 'chemistry', 1997, 2000]

After deleting value at index 2 :

['physics', 'chemistry', 2000]

 

1.6.  tuple 元组

元组是另一个数据类型,类似于List(列表)。[]

元组用"()"标识。内部元素用逗号隔开。但是元组中的元素值是不允许修改,相当于只读列表

 

例:

#coding=utf-8
 
 
tinytuple = (123, 'john')
tuple = (
'hello', 786 , 2.23, 'world', 70.2, tinytuple)
 
 
#tuple[1]= 'rewrites'      tuple的值不可以修改,否则运行时报错
 
print tuple               # 输出完整元组
 
print tuple[0]            # 输出元组的第一个元素
 
print tuple[1]            # 输出元组的第二个元素
 
print tuple[1:3]          # 输出第二个至第三个的元素
 
print tuple[2:]           # 输出从第三个开始至元组末尾的所有元素
 
print tinytuple * 2       # 输出元组两次
 
print tuple + tinytuple    # 打印组合的元组
 

 

 

结果:

('hello', 786, 2.23, 'world', 70.2, (123, 'john'))

hello

786

(786, 2.23)

(2.23, 'world', 70.2, (123, 'john'))

(123, 'john', 123, 'john')

('hello', 786, 2.23, 'world', 70.2, (123, 'john'), 123,   'john')

 

Python的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

如下实例:

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (
1, 2, 3, 4今日值班讲师 或者直接加入千人QQ群进行咨询:210992946

分享到: