Info
Content

Python中的数据类型

Python中常见的数据类型

  • 数值(Numbers)
  • 布尔 (Bool)
  • 字符串(String)
  • 列表(List)
  • 元组(Tuple)
  • 字典(Dictionary)
  • 集合(Set)

变量

数值型

数值型包含整数、浮点数和复数。其基本表示情况如下表。

布尔型

所有内置的数据类型与标准库提供的数据类型都可以转换为一个布尔型值。使用and、or、not三个逻辑操作符可以将对象之间的关系以True或False来表示,这就是布尔值。

字符串型
  1. 可以用单引号或双引号标识,反斜杠转义
  2. 可以使用乘号快速生成字符串
  3. 可以直接当做字符的列表

以下是关于字符串应用的示例:

print与格式输出

使用print函数,配合各类字符串格式化方法,可以进行格式化输出。

一般如下行代码所示:

print('%s is %d years old' %('Jack',25))

对于变量的修饰部分有如下要求

'% [-] [+] [0] [m] [.n] 格式字符' % x

其中

'-'表示指定左对齐输出
'+'表示对正数加正号
'0'表示指定空位填0
'm'表示指定最小宽度
'n'表示指定精度
'格式字符'表示显示时指定的类型
'x' 表示待转换的表达式

对于格式字符的类型可见下表

格式 说明
%c 格式化字符或编码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整数
%o 格式化八进制数
%x 格式化十六进制数
%f 格式化浮点数,可指定小数位数
%e 用科学计数法格式化浮点数

小练习:设计一个程序,实例以下输出。

请输入表格的宽度:30
==============================
项目                  价格
------------------------------
苹果                    6.00
桔子                    3.20
香蕉                    2.50
葡萄                   14.80
红提                   15.00
西瓜                    1.50
==============================

提示:fm="%-*s%*s"

运算符与表达式

运算符
  1. 标准运算符

Python中的标准运算符有以下几种,分别是

+  -  *  /  //  %  ** (加、减、乘、除、整除、模、幂)
  1. 比较运算符

Python中的比较运算符有

< <= > >= == <> !=
  1. 逻辑运算符

Python中逻辑运算符有

and  or  not
运算表达式

所谓运算表达式即是以上述运算符连接对象进行计算的式子

如:

x+y
x-y
x and y
x in y

序列

Python中包含了6种内建的序列,分别是:

  • 字符串
  • 列表
  • 元组
  • Unicode字符串
  • buffer对象
  • xrange对象

其中最为常用的就是列表和元组。这两者的区别在于列表中的信息可以修改,而元组中的信息不能修改。序列中可以包含各种数据,当然序列中也可以包含序列。

例:

zhangsan=['zhangsan','male',32]
lisi=['lisi','female',30]
user=[zhangsan,lisi]
通用的序列操作
  1. 序列的索引 序列中所有的元素都有编号,且从0开始递增。可以通过这个编号来访问序列中的元素。编号的设置可以为正数,表示从左向右计数;也可以为负数,表示从右向左计数,起始值为-1。

  2. 序列的分片

  • 分片是指使用两个索引值来指定序列中的一个部分。需要注意的是:第1个索引是需要提取部分的第1个元素的编号,而最后的索引则是分片之后剩下部分的第1个元素的编号。 例:
numbers=[1,2,3,4,5,6,7,8,9]
print(numbers[3:6])
# 如需要访问这个序列的最后三个值可以有以下几个方法,哪些是可行的
numbers[6:9]
numbers[-3:-1]
numbers[-3:0]
numbers[-3:]
  • 带有步长的分片

    所谓步长,是指每隔几个元素指定一个对象。

    例:

    numbers=[1,2,3,4,5,6,7,8,9]
    print(numbers[::2])
    

    步长可以是一个正数,也可以是一个负数。

    例:

    numbers=[1,2,3,4,5,6,7,8,9]
    print(numbers[9:0:-2])
    
  1. 序列相加

    使用加号加多个序列连接起来。

    例:

    ['1','2','3']+['a','b','c']
    
  2. 序列乘法

    使用乘法可以将当前序列生成一个重复n次的新的序列

    例:

    ['a','b','c']*5
    
  3. 成员资格

    该项是指检查一个值是否存在于一个序列中,采用in运算符。返回值为布尔值。

    例:

    classmates=['Jack','Tom','Helen']
    buddy='Jack'
    buddy in classmates
    
  4. 长度、最小值和最大值

    可以使用函数len、max、min来分别得出序列中的长度、最大以及最小值。

关于列表
列表基本操作
  1. list函数

    应用场景:修改字符串中的指定字符

    使用list函数可以将字符串转换成列表,此时的对象就可以修改,修改完毕后再使用''.join()的方式重新转换成字符串。

  2. 列表指定赋值

    应用场景:修改列表中的某一个指定对象

  3. 删除指定元素

    应用场景:将列表中的指定元素删除掉

    使用del语句实现。

    例:

    classmates=['Jack','Tom','Helen']
    del classmates[1]
    
  4. 分片赋值

    应用场景1:将字符串中的指定区域进行修改

    例:

    me="china"
    me=list(me)
    me[4:]=list('ese')
    

    应用场景2:使用分片插入新的元素

    例:

    numbers=[1,5]
    numbers[1:1]=[2,3,4]
    
列表的常用方法
序号 方法名 作用 使用举例
1 append 用于在列表末尾追加新的对象 lst.append(sth)
2 count 用于统计某个元素在列表中出现的次数 x.count(sth)
3 extend 用于在列表的末尾一次性追加另一个序列中的多个值 a.extend(b)
4 index 用于从列表中找出某个值第一个匹配项的索引位置 x.index(sth)
5 insert 用于将对象插入到列表中 x.insert(index,sth)
6 pop 用于移除列表中的一个元素(默认最后一值) x.pop(index)
7 remove 用于移除列表中某个值的第一个匹配项 x.remove(sth)
8 reverse 用于将列表中的元素反向存放 x.reverse()
9 sort 用于在原位置对列表进行排序(修改自身) x.sort()
-9 sorted 用于对列表进行排序返回排序值(不修改自身) y=sorted(x)
10 cmp 用于比较两个值的大小 cmp(12,8)
关于元组
  • 元组的表示
x=(1,2,3)
  • 元组的生成

使用tuple函数

例:

y=[1,2,3]
x=tuple(y)
  • 最重要的一点

元组内容不可修改

关于字典

对于一组数据的呈现,除了可以使用下标调用列表或元组的值以外,还可以构建使用一个通过名字引用值的数据结构。这种结构类型称为映射(mapping)。字典是Python中唯一内建的映射类型。在字典中,其值没有特殊的顺序,但每个值都存在于一个指定的键(key)中。键可以是数字、字符串甚至是元组。

如果没有字典,我们建立存储用户电话的方式就会如下:

names=['Jack','Helen','Tom','Bob']
tels=['5500501','8899789','9900876','6632123']

当我们需要查询某个用户的电话时得采用如下方法:

展开查看

print(tels[names.index('Tom')])

使用字典可以怎样解决呢?

字典的创建和使用
  1. 常规创建方法示例:
tels={'Jack':'5500501','Helen':'8899789','Tom':'9900876','Bob':'6632123'}
print(tels['Tom'])
  1. 使用dict函数示例:
info=[('name','Jack'),('sex','male')]
#or info=dict(name='Jack',sex='male')
d=dict(info)
print(d)
print(d['name'])
  1. 字典的方法

(1)clear:清除字典中的所有的项。

tels={'Jack':'5500501','Helen':'8899789','Tom':'9900876','Bob':'6632123'}
my-tels=tels
#my-tels和tels分别保存着什么?
tels={}
#my-tels和tels分别保存着什么?

tels={'Jack':'5500501','Helen':'8899789','Tom':'9900876','Bob':'6632123'}
my-tels=tels
tels.clear()
#my-tels和tels分别保存着什么?

(2)copy:浅复制

浅复制中,如果是值的替换,原始字典不受影响,如果是值的修改(增、删),则原始字典也会改变。

tels={'Jack':'5500501','Helen':'8899789','Tom':'9900876','Bob':['6632123','199876']}
my_tels=tels.copy()
#my-tels和tels分别保存着什么?
my_tels['Jack']='5588009'
#my-tels和tels分别保存着什么?
my_tels.remove='199876'
#my-tels和tels分别保存着什么?

要避免上述现象,实现完全复制,可以使用deepcopy方法

解析赋值、浅复制和深复制 b = a: 赋值引用,a 和 b 都指向同一个对象

b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)

copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的

(3)get:访问指定键的值

使用get来精准调用指定键的值,如果键不存在,则返回None

tels.get('Jack')

(4)has_key:检测键值是否存在

使用has_key检测当前字典是否包含检测的键值。

tels.has_key('Boby')

(5)pop:获得给定的键值,并将键-值从字典中移除

tels.pop('Boby')

(6)popitme:删除字典中的随机项

tels.popitem()
关于集合

集合是指一组对象的集合,对象可以是各种类型。集合的元素之间没有任何顺序,且元素都不重复。Python中集合的类型用set表示。

创建集合
  1. 以{}将多个元素括起来,元素间用逗号分隔,以表示一个集合
vehicle={'train','bus','car','ship'}
  1. 以set函数来声明
vehicle=set(['train','bus','car','ship'])

注意,空集只能以set函数来创建,不能{}表示。因为{}表示的是空的字典

集合的并集

创建一个新的集合,包含已经存在的两个集合中的所有元素。

  1. 使用“|”符号
vehicle1={'train','bus','car','ship'}
vehicle2=set(['subway','bicycle'])
vehicle=vehicle1|vehicle2
  1. 使用union()方法
vehicle1={'train','bus','car','ship'}
vehicle2=set(['subway','bicycle'])
vehicle=vehicle1.union(vehicle2)
集合的交集

创建一个新的集合,是两个集合的公共部分。

  1. 使用“&”符号
vehicle1={'train','bus','car','ship'}
vehicle2=set(['subway','bicycle','ship'])
vehicle=vehicle1&vehicle2
  1. 使用intersection()方法
vehicle1={'train','bus','car','ship'}
vehicle2=set(['subway','bicycle','ship'])
vehicle=vehicle1.intersection(vehicle2)
集合的差集

创建一个新集合,收集在调用集合但不在参数集合中的元素。

  1. 使用“-”符号
vehicle1={'train','bus','car','ship'}
vehicle2=set(['subway','bicycle','ship'])
vehicle=vehicle1-vehicle2
  1. 使用difference()方法
vehicle1={'train','bus','car','ship'}
vehicle2=set(['subway','bicycle','ship'])
vehicle=vehicle1.difference(vehicle2)
集合的对称差

收集两个集合中不共享的元素

  1. 使用“^”符号
vehicle1={'train','bus','car','ship'}
vehicle2=set(['subway','bicycle','ship'])
vehicle=vehicle1^vehicle2
  1. 使用symmetric_difference()方法
vehicle1={'train','bus','car','ship'}
vehicle2=set(['subway','bicycle','ship'])
vehicle=vehicle1.difference(vehicle2)
update()方法

update()方法相当于集合元素合并运算

vehicle1={'train','bus','car','ship'}
vehicle2=set(['subway','bicycle','ship'])
vehicle1.update(vehicle2)
add()方法

add()方法的作用是向集合中添加元素

vehicle1={'train','bus','car','ship'}
vehicle1.add('subway')
remove()方法

remove()方法是从集合中删除元素,如果没有该元素,就会出错。

vehicle1={'train','bus','car','ship'}
vehicle1.remove('subway')
discard()方法

remove()方法是从集合中删除元素,如果没有该元素,也不会出错。

vehicle1={'train','bus','car','ship'}
vehicle1.discard('subway')
pop()方法

pop()方法是从集合中删除任一元素,并返回该元素。

vehicle1={'train','bus','car','ship'}
w=vehicle1.pop()
其他常用方法

clear()方法是从集合中删除所有元素

copy()方法是复制集合

len()是确定集合中元素的数量

in可以用来判断某元素是否存在于集合之中。

No Comments
Back to top