变量赋值
- Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程。
- 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
- 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
- 等号(=)用来给变量赋值。
- 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
例如:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
print(counter)
print(miles)
print(name)
多个变量赋值
Python允许你同时为多个变量赋值。例如:
a = b = c = 1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
您也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "john"
以上实例,两个整型对象1和2的分配给变量a和b,字符串对象"john"分配给变量c。
常量
所谓常量就是不能变的变量,比如常用的数学常数π
就是一个常量。通常用大写字母表示常量。示例:
PI = 3.14159265359
与PHP、JAVA的常量不一样,Python本身并没有提供常量这一机制。也就是说,在Python里,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量PI
的值,也没人能拦住你。
数据类型
Python提供的基本数据类型主要有:布尔类型、整型、浮点型、字符串、列表、元组、集合、字典等等。
Python有五个标准的数据类型:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
数字(number)
Python数字类型是不可改变的数据类型。
Python支持四种不同的数字类型:
- int(有符号整型)
- long(长整型[也可以代表八进制和十六进制])
- float(浮点型)
- complex(复数)
# 整数
int=20;
# 浮点数
float=2.3;
print(int)
print(float)
print(pow(2,5))
print(2**5)
输出:
20
2.3
32
32
字符串(str)
a、使用单引号(')
用单引号括起来表示字符串,例如:
str='this is string';
print(str);
b、使用双引号(")
双引号中的字符串与单引号中的字符串用法完全相同,例如:
str="this is string";
print(str);
c、使用三引号(''')
利用三引号,表示多行的字符串,可以在三引号中*的使用单引号和双引号,例如:
str='''this is string
this is python string
this is string'''
print(str);
当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。
加号(+)是字符串连接运算符,星号(*)是重复操作。如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = 'Hello World!'
print(str) # 输出完整字符串
print(str[0]) # 输出字符串中的第一个字符
print(str[2:5]) # 输出字符串中第三个至第五个之间的字符串
print(str[2:]) # 输出从第三个字符开始的字符串
print(str * 2) # 输出字符串两次
print(str + "TEST") # 输出连接的字符串
以上实例输出结果:
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
转义字符\
可以转义很多字符,比如\n
表示换行,\t
表示制表符,字符\
本身也要转义,所以\\
表示的字符就是\
,可以在Python的交互式命令行用print()
打印字符串看看:
>>> print('I\'m ok.')
I'm ok.
如果字符串里面有很多字符都需要转义,就需要加很多\
,为了简化,Python还允许用r''
表示''
内部的字符串默认不转义,可以自己试试:
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
字符串通过encode()
方法可以编码为指定的bytes,例如:
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。
在bytes中,无法显示为ASCII字符的字节,用\x##
显示。
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()
方法:
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
可以使用str()
将其它类型转为字符串类型。
列表(list)
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。
列表用[ ]
标识。
列表中使用切片操作符[头下标:尾下标]
,就可以截取相应的列表,从左到右索引默认0开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。
加号(+)是列表连接运算符,星号(*)是重复操作。如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
list = [ 'Hello', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print(list) # 输出完整列表
print(list[0]) # 输出列表的第一个元素
print(list[1:3]) # 输出第二个至第三个的元素
print(list[2:]) # 输出从第三个开始至列表末尾的所有元素
print(tinylist * 2) # 输出列表两次
print(list + tinylist) # 打印组合的列表
以上实例输出结果:
['Hello', 786, 2.23, 'john', 70.2]
Hello
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['Hello', 786, 2.23, 'john', 70.2, 123, 'john']
删除列表元素
L=['spam', 'Spam', 'SPAM!'];
del L[0]
列表函数&方法
len(list) 列表长度
list.append(obj) 在列表末尾添加新的对象,相当于其它语言里的push
list.count(obj) 统计某个元素在列表中出现的次数
list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj) 从列表中找出某个值第一个匹配项的索引位置,索引从0开始
list.insert(index, obj) 将对象插入列表
list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) 移除列表中某个值的第一个匹配项
list.reverse() 反向列表中元素,倒转
list.sort([func]) 对原列表进行排序
元组(tuple)
元组是另一个数据类型,类似于List(列表)。
元组用()
标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
tup = ();
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";
元组中只有一个元素时,需要在元素后面添加逗号,例如:tup1 = (50,);
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,例如:
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');
# 以下修改元组元素操作是非法的。
# tup1[0] = 100;
元组中的元素值是不允许删除的,可以使用del语句来删除整个元组。
元组内置函数
cmp(tuple1, tuple2) 比较两个元组元素。
len(tuple) 计算元组元素个数。
max(tuple) 返回元组中元素最大值。
min(tuple) 返回元组中元素最小值。
tuple(seq) 将列表转换为元组。
字典(dict)
字典是一种无序存储结构,包括关键字(key)和关键字对应的值(value)。字典的格式为:dictionary = {key:value}
。key为不可变类型,如字符串、整数、只包含不可变对象的元组,列表等不可作为关键字。字典也被称作关联数组或哈希表。
示例:
>>> dict = {'name': 'Zara', 'age': 7, 'class': 'First'};
字典操作:
# 访问
>>> dict['name']
'Zara'
>>> dict['age']
7
# 修改
>>> dict['name'] = 'yjc'
>>> dict['name']
'yjc'
>>> dict["school"]="wutong"
>>> dict["school"]
'wutong'
# 删除
del dict['name']; # 删除键是'name'的条目
dict.clear(); # 清空词典所有条目
del dict ; # 删除词典
注意:字典不存在,del
会引发一个异常。
字典内置函数方法:
cmp(dict1, dict2) 比较两个字典元素。
len(dict) 计算字典元素个数,即键的总数。
str(dict) 输出字典可打印的字符串表示。
type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。
dict.clear() 删除字典内所有元素
dict.copy() 返回一个字典的浅复制
dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
dict.has_key(key) 如果键在字典dict里返回true,否则返回false
dict.items() 以列表返回可遍历的(键, 值) 元组数组
dict.keys() 以列表返回一个字典所有的键
dict.setdefault(key, default=None) 和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default
dict.update(dict2) 把字典dict2的键/值对更新到dict里
dict.values() 以列表返回字典中的所有值
集合(set)
集合(set)和字典(dict)类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
注意,传入的参数[1, 2, 3]
是一个list,而显示的{1, 2, 3}
只是告诉你这个set内部有1,2,3
这3个元素,显示的顺序也不表示set是有序的。。
重复元素在set中自动被过滤:
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
set 常用方法:
s.add(key)
s.remove(key)
布尔类型(bool)
在Python中,None、任何数值类型中的0
、空字符串""
、空元组()
、空列表[]
、空字典{}
都被当作False
,还有自定义类型,如果实现了__nonzero__()
或__len__()
方法且方法返回0
或False
,则其实例也被当作False
,其他对象均为True
。
布尔值和布尔代数的表示完全一致,一个布尔值只有True
、False
两种值,要么是True
,False
,在Python中,可以直接用True
、False
(请注意大小写),也可以通过布尔运算计算出来:
>>> True
True
>>> False
False
>>> 3 > 2
True
>>> 3 > 5
False
布尔值可以用and(与)、or(或)和not(非)运算(逻辑运算符,并不是位运算符):
a = 10
b = 20
a and b # 20
a or b # 10
not a # False
not b # False
空值(None)
表示该值是一个空对象,空值是Python里一个特殊的值,用None
表示。None
不能理解为0,因为0是有意义的,而None
是一个特殊的空值。
参考
1、python数据类型详解 - Ruthless - 博客园
http://www.cnblogs.com/linjiqin/p/3608541.html
2、Python 变量类型 | 菜鸟教程
http://www.runoob.com/python/python-variable-types.html
3、数据类型和变量
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431658624177ea4f8fcb06bc4d0e8aab2fd7aa65dd95000
4、使用list和tuple
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316724772904521142196b74a3f8abf93d8e97c6ee6000