Python数据类型

一、Python有8种数据类型,包括Boolean(布尔值)+None(空值)+六个标准数据类型:
  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
1.1、查看变量的数据类型:type() 和isinstance()
  • type() 不会认为子类是一种父类类型,不考虑继承关系。
  • isinstance() 会认为子类是一种父类类型,考虑继承关系。
  如果要判断两个类型是否相同推荐使用 isinstance()。
  eg:
if type(one) != int or type(two) != int:
	print "THE NUMBER IS WRONG"

1.2 、数字Numbers

(1)python支持三种不同的数值类型

  • int:整形(整型是没有限制大小的,可以当作 Long 类型使用)
  • float:浮点型
  • complex:复数
注:计算机里如何区分正数负数?我们规定最高位是符号位。为0是正,为1负。所以最高位是不可以参加计算的。比如二进制数1000最高位是符号位的话,转十进制不是8,而是负0(正0的二进制形式是0000)
 
(2)转换方法:
  • int(x) 转换成一个integer
  • long(x) 转换成一个long interger(python3中没有long)
  • float(x) 转换成一个浮点数
  • str():转换为字符串
  • list():转换为列表
  • eval():转换为字典
  • 随机数函数:
    •   random() 随机生成下一个实数,它在[0,1)范围内
    •   uniform(x, y) 随机生成下一个实数,它在[x,y]范围内
(3)注意:
  • Python可以同时为多个变量赋值,如a, b = 1, 2。
  • 值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
  • 在混合计算时,Python会把整型转换成为浮点数。
1.3、字符串String
  使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串。其中三引号可以由多行组成,编写多行文本的快捷语法

(1)字符串有两种索引方式,从左往右以0开始,从右往左以-1开始

(2)字符串格式化两种方法:

  • 占位符% : 将一个值插入到一个有字符串格式符 %s 的字符串中
    • %s 格式化字符串;
    • %d 格式化整数)
    eg:print "My name is %s and weight is %d kg!" % ('Zara', 21)
  • str.format():增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 %
    •  {} 格式化字符串
    • : 格式化数字

(3)转义字符: 使用反斜杠(\)转义特殊字符

(4)比较字符串:python可以使用比较运算符(==、!=、>、<...)通过比较字符的数值ASCII代码实现比较字符串大小

(5)字符串前面加r:意味着该字符串将被视为原始字符串,这意味着所有转义码都将被忽略
(6)字符串前面加u:代表编码是unicode
(7)字符串处理函数:
  • strip():从原始字符串的开头和结尾删除给定的字符。默认删除字符串开头和结尾的空格,并返回前后不带空格的相同字符串
    格式:str.strip([characters])
  • startsWith():用来判断当前字符串是否是以另外一个给定的子字符串“开头”,根据判断结果返回 true 或 false。
    格式:str.startsWith(searchString [, position]);
        searchString要搜索的子字符串。
        position在 str 中搜索 searchString 的开始位置,默认值为 0开头处。
  • split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表
    格式:str.split(str="",num=string.count(str))[n]
    • str:表示为分隔符,默认为空格,但是不能为空('')
    • num:表示分割次数
    • [n]:表示选取第n个分片
str = "this is string example....wow!!!"
print (str.split( ))
#输出:['this', 'is', 'string', 'example....wow!!!']
 
1.4、列表List
  列表用“ [ ] ”标识,是 python 最通用的复合数据类型,可包含任何类型的值。
  语法:列表名=[值1,值2]
      取值:列表名[1] (索引值以 0 为开始值,-1 为从末尾的开始位置)

(1)列表元素指向其值,列表是可变的,列表属于栈---后进先出(队列---先进先出)

    • (pop:删除末尾/栈顶元素)
    • (push:在末尾/栈顶添加元素)

(2)列表操作:

    1. 增:列表[0:0]=[元素](注意:这种方式是往列表中的第一个位置添加元素)
    2. 删:
      • 删除单个元素:del 列表[下标]
      • 删除多个元素(通过切片):del 列表[起始位置:结束位置]
    3. 改:列表[下标]=新值
    4. 查:
      • 获取单个值:列表[下标],下标可以为负数,负数是从倒数获取
      • 获取多个值:列表[起始位置:结束位置:步长],起始位置和结束位置可以省略不写;如果开始位置不写,则会从第一个元素开始获取;如果结束位置不写,则会获取到最后一个元素;如果都不写,则为列表的复制
     5.遍历:遍历list列表的元素,使用for循环
 
(3)列表运算:
  • +:两个列表相加,包含两个列表的所有元素
  • *:列表元素重复
  • in:检查元素是否存在
  • not in:检查元素是否不存在
(4)列表方法:
  • list.index(x):获取x的索引
  • list.append(x):在列表最后追加元素
  • list.extend(x,y):在列表最后追加多个元素
  • list.insert(i, x): 在索引i处插入x
  • list.pop(i, x): 删除索引处元素,没有指定i则删除最后一个元素
  • list.remove(x) :移除x
  • list.clear():清空列表
  • list.count(x):统计x在列表中出现的次数
(5)列表排序:
  • list.reverse():将列表中元素反转排序
  • list.sort():对列表内容进行正向排序,sort排序方法是直接修改原列表list排序方法
  • (comp:降序排序;cmp:升序排序)
  • list.sorted():可以保留原列表,又能得到已经排序好的列表(sorted()方法可以用在任何数据类型序列中,返回的总是一个列表形式)
(6)列表函数:
  • len(list) :列表长度
  • max(list):返回列表元素中的最大值
  • min(list):返回列表元素中的最小值
 
(7)自引用 :snake[1]=snake [1,[...],3 ]
 
1.5、元组Tuple
  元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表
 
1.6、字典Dictionary
  字典当中的元素是通过键来存取的,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合
  格式:d = {'key1' : value1, 'key2' : value2 }
  键必须是唯一的,但值则不必,值可以取任何数据类型,但键必须是不可变(数字,字符串、元组)
(1)字典取值:
  • person = {'name':'xiaoming', 'age':18}
  • # 第一种 若键不存在则会抛出KeyError异常
  • person['city']
  • # 第二种 不会抛出异常,不存在则返回None,也可以设置默认返回值
  • person.get('city',"上海")
  • # 第三种 与第二种类似,区别在于setdefault方法会更新字典
  • person.setdefault('city', '上海')
(2)修改字典:字典名[key]=value,如果key存在则修改,如果不存在则创建一个新的key和value person["name"]="小鹿"
(3)删除字典:def dic[] ;
   清空字典内所有元素: dict.clear()
(4)遍历dict:
  • keys():获取所有key ;.
  • values():获取所有值;
  • items() 方法:以列表返回可遍历的键值对
for key in person.keys():
    print(f"{key}:{person.get(key)}")

for value in person.values():
    print(f"{value}")

for key, value in person.items():
    print(f"{key}:{value}")
(5)构造函数 dict() :可以直接从键值对序列中构建字典如下:
  eg:a = dict([('Ctrip', 1), ('Google', 2), ('Taobao', 3)])
    {'Ctrip': 1, 'Google': 2, 'Taobao': 3}  
1.7、集合:(set)
  是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
  创建格式:parame = {value01,value02,...} 或者 set(value)
(1)集合中判断元素是否存在:x in s
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
  print(basket)                      # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
'orange' in basket                 # 快速判断元素是否在集合内
True
'crabgrass' in basket
False
(2)集合运算:
a = set('abracadabra')
b = set('alacazam')

a - b                              # 集合a中包含而集合b中不包含的元素{'r', 'd', 'b'}
a | b                              # 集合a或b中包含的所有元素{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
a & b                              # 集合a和b中都包含了的元素{'a', 'c'}
a ^ b                              # 不同时包含于a和b的元素{'r', 'd', 'b', 'm', 'z', 'l'}
 
2、序列:值一组按顺序排列的值(字符串、元组、列表)
  • 正索引为0,负索引为-1,为空表示头或尾
  • 切片表达法:变量 [头下标:尾下标],从索引“头下标”到“尾下标-1”

 

s = 'ilovepython'
print(s[1:5])     #结果是love


array = [1, 2, 5, 3, 6, 8, 4]
array[1:] #列出1以后的。输出[2, 5, 3, 6, 8, 4]
array[:-1] #列出-1之前的。输出[1, 2, 5, 3, 6, 8]
array[3:-3] #列出3到-3之间的。输出[3]
array[::-1]#将列表反转输出[4,8,6,3,5,2,1]
array[::2]#每隔两个下标输出[1, 5, 6, 4]

 

(1)加号 + 是列表连接运算符,星号 * 是重复操作。

(2)使用len()计算长度

(3)x in s,当s位于x返回true,否则返回false

posted @ 2022-07-20 21:27  张小丹  阅读(726)  评论(0编辑  收藏  举报