Python学习笔记(三)——数据类型

Python的数据类型可以分为:

  • 数字类型
    • bool----布尔(真假)(True 1,False 0)
    • int-----整数
    • float—浮点数(小数)
  • 非数字类型
    • 字符串—str
    • 列表-----list
    • 元组----tuple
    • 字典----dict

也可以分为可变类型和不可变类型

  • 不可变类型:数字,字符串,元组
  • 可变类型
    • 列表、字典
    • 字典的key只能使用不可变类型的数据

在文章的最后还会重点讲解

1. 数字类型

1.1 布尔类型—bool
有两种表示方法:
True-------当用于计算时 可以当做数字 1
False------当用于计算时 可以当做数字 0

示例:
>>>1 + True
2
>>>2 - False
2
1.2 浮点数与整型之间的转换

使用 int() 和 float() 这两个方法

示例:
>>>int(3.6)
6
>>>float(6)
6.0

2.非数字类型

2.1 字符串
  • 使用双引号或者单引号的方式包含的内容,(推荐使用双引号)。

  • 索引从0开始

  • 字符串是不可变类型

      例如 :定义一个字符串
      str1 = "hello python"
      
      # 1.获取指定下标的字符串
      print(str1[0])   
      
      # 2. 获取指定字符串的下标,如果字符串不存在,则程序会报错
      print(str1.index("p"))
      
      # 3. 统计字符串中字符的长度
      print(len(str1))
      
      # 4. 统计某一字符出现的次数
      print(str1.count("h"))
      
      # 5. 判断是否以指定的字符开头或者结尾。
      print(str1.startswith("he"))  #True
      print(str1.endswith("python"))  #False
      
      # 6. 查找指定的字符串
      # index可以查找指定的字符串在大字符串中的索引,find也可以
      print(str1.find("py"))
      # index如果指定的字符串不存在,会报错
      # find 如果指定的字符串不存在,会返回-1
      print(str1.find("pn"))  #返回 -1
      
      # 7. 替换字符串,返回修改后的字符串,但原字符串不会被修改
      print(str1.replace("python","world"))
      print(str1) #输出的结果还是原来的值 hello Python
      	
      # 8. 循环遍历字符串中的每个字符
      for char in str1:
          print(char)
    

    注意:

      #在Python中 制表符,换行符等都属于空白字符
      str2 = "  "
      print(str2.isspace())
      str3 = "   \t\n\r"
      print(str3.isspace())
      str4 = "  a"
      print(str4.isspace())
      
      演示结果如下:
      True
      True
      False
    
    
      #注意 : isdecimal()的用法 ------不能判断小数,只能判断整数
      #num_str= "1.1"
      num_str = "(1)"
      #如果string只包含整数,则返回True
      print(num_str.isdecimal()) 
      #这两个变量的输出都是False,当num_str  = "1"的时候 为True.
    
2.1.1. 文本对齐

在这里插入图片描述

2.1.2. 去除空白字符

在这里插入图片描述

2.1.3. 结合对齐方式和去除空白字符进行演示

演示一:
#对下面的诗句进行对齐操作。

poem = [
"登鹳雀楼",
"王之涣",
"白日依山尽",
"黄河入海流",
"欲穷千里目",
"更上一层楼"
]

print("原字符串输出")
for poem_str1 in poem:
    print(poem_str1)

print("居中显示1")
for poem_str2 in poem:
    print(poem_str2.center(10))

print("居中显示2")
for poem_str3 in poem:
    print("|%s|" % poem_str3.center(10," ")) #此处为中文空格

print("文本左对齐")
for poem_str4 in poem:
    print("|%s|" % poem_str4.ljust(10," "))

print("文本右对齐")
for poem_str5 in poem:
    print("|%s|" % poem_str5.rjust(10," "))

print("去除空格居中对齐")
for poem_str6 in poem:
    print("|%s|" % poem_str6.strip().center(10," "))
    
结果:

原字符串输出结果:
登鹳雀楼
王之涣
白日依山尽
黄河入海流
欲穷千里目
更上一层楼

输出结果:居中显示1
   登鹳雀楼   
   王之涣    
  白日依山尽   
  黄河入海流   
  欲穷千里目   
  更上一层楼   

输出结果:居中显示2
|   登鹳雀楼   |
|   王之涣    |
|  白日依山尽   |
|  黄河入海流   |
|  欲穷千里目   |
|  更上一层楼   |

输出结果:文本左对齐
|登鹳雀楼      |
|王之涣       |
|白日依山尽     |
|黄河入海流     |
|欲穷千里目     |
|更上一层楼     |

输出结果:文本右对齐

|      登鹳雀楼|
|       王之涣|
|     白日依山尽|
|     黄河入海流|
|     欲穷千里目|
|     更上一层楼|

输出结果:去除空格居中对齐
|   登鹳雀楼   |
|   王之涣    |
|  白日依山尽   |
|  黄河入海流   |
|  欲穷千里目   |
|  更上一层楼   |

演示二:

poem_str = "登鹳雀楼\t 王之涣 \t 白日依山尽 \t \n 黄河入海流 \t\t 欲穷千里目 \t\n更上一层楼"
print(poem_str)

# 1.拆分字符串
poem_1 = poem_str.split()
# 2.合并字符串,以空格作为分隔符
result = " ".join(poem_1)
print(result)

结果:
登鹳雀楼	 王之涣 	 白日依山尽 	 
黄河入海流 		 欲穷千里目 	
更上一层楼
登鹳雀楼 王之涣 白日依山尽 黄河入海流 欲穷千里目 更上一层楼
2.1.4 jion()

join(seq):以指定字符作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串。(就是作为字符串的分隔符)

s1 = "-"
s2 = ""
seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
print (s1.join( seq ))
print (s2.join( seq ))
结果为:
r-u-n-o-o-b
runoob
2.2. 列表列表:List----是Python中使用最频繁的数据类型,在其他语言中称为数组。
  • 列表中可以存储不同的类型的数据。
  • 用[]表示,数据之间用,逗号分隔,
  • 列表的索引从0开始。(索引就是下标)
  • 如果从列表中取值时,如果超过索引的范围,程序会报错。
  • 列表是可变类型
2.2.1 列表的操作

演示如下:

# 1. 创建一个空列表
lis = [] 
name = ["zeng",1,"zhang"]
# 2.长度
print(len(name))   # 3

# 3.取值
print(name[0])   # "zeng"

# 4.添加数据——append方法可以向列表的末尾追加数据
name.append("曾")
# insert方法可以在列表的指定索引位置插入数据
name.insert(1,"王五")

#注意:当使用insert时,如超出列表的范围,则默认在最后添加数值
list1 = ["aa",[2,3,4.1]]
list1[1].insert(len(list1),3.0)
print(list1)
# 结果:['aa', [2, 3, 4.1, 3.0]]

name1 = [1,2,3]
# extend 方法可以把其他列表中的完整内容,追加到当前列表的末尾。
name.extend(name1)

# 5.输出指定元素的下标
print(name.index("zeng"))

# 6.修改数据
name[2] = "李四"
print(name)

# 7.删除
# remove()方法可以从列表中删除指定的数据。
name.remove(name[7])
# 8.pop 方法默认删除最后一个元素
name.pop()
# pop 方法可以指定要删除元素的索引
name.pop(1)
print(name)

# 9. 清除
name.clear()

# 10.列表的遍历
name_list = ["张三","李四","王五"]
for name in name_list:
    print("我的名字是%s"%name)

注意:使用del关键字时应注意

name_list = ["张三","李四","王五"]
#使用del关键字列表元素
#删除数据时,建议使用列表提供的方法,比如remove
del name_list[1]
name = "小明"
#del 关键字本质上是用来将一变量从内存中删除的。则后续的代码就不能再使用这个变量了。
del name
print(name)
print(name_list)
2.2.2 列表数据排序
# 1. 数据升序排列
num_list = [1,5,3,8,20,2,0]
num_list.sort()
print(num_list)
# 2. 数据降序
num_list.sort(reverse=True)
print(num_list)
#3.  数据反转,不用传递参数
num_list.reverse()
print(num_list)
2.2.3 Python列表函数&方法
1.len(list):列表元素个数
2.max(list):返回列表元素最大值
3.min(list):返回列表元素最小值
4.list(seq):将元组转换为列表
6.list.count(obj):统计某个元素在列表中出现的次数
7.在使用remove(obj)时,当出现多个相同的元素时,只删除第一次出现的数据。

Python中的内置函数:
在这里插入图片描述

2.2.4 列表中的+=

在Python中,列表变量调用 +=本质上是在执行列表变量的extend方法,不会修改变量的引用。

def demo(num,num_list):
    print("函数内部的代码")
    num += num
   # num_list += num_list
    num_list.extend(num_list)
    print(num)
    print(num_list)

    print("函数执行完成")

gl_num = 8
gl_list = [1,2,3]
demo(gl_num,gl_list)
print(gl_num)
print(gl_list)
2.3 元组
  • 元组中可以包含任意数量类型的数据,使用一对括号()表示

  • 当元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用,tup1 = (1,)

  • 元组在输出时总是有括号的,以便于正确表达嵌套结构。在输入时可能有或没有括号, 不过括号通常是必须的

  • 元组中的元素值不允许修改,也不能进行删除操作。

    代码示例:

      >>>info_tuple = ()  #创建一个空元组
      >>> t = (12345, 54321, 'hello!')
      >>> t[0]
      	12345
      >>> t
      	(12345, 54321, 'hello!')
      >>>  u = (t, (1, 2, 3, 4, 5))
      >>> u
      	((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
    
    2.3.1 元组的操作
      info_tuple = ("zhangsan",20,1.80)
      # 1.取值和取索引
      print(info_tuple[0])
      print(info_tuple.index("zhangsan"))
      
      # 2.统计元素
      print(info_tuple.count("zhangsan"))
      # 统计元素中包含的元素个数。
      print(len(info_tuple))
      
      # 3.遍历元组
      for my_info in info_tuple:
          print(my_info)
    
      结果:
      zhangsan
      0
      1
      3
      zhangsan
      20
      1.8
    

注意:之前所说的格式化字符串,其后面的(),就是元组

info_tuple = ("张三",20,1.80)
print("%s 年龄是%d 身高是%.2f" %info_tuple)

info = "%s 年龄是%d 身高是%.2f" %info_tuple
print(info)

张三 年龄是20 身高是1.80
2.3.2 元组和列表的转换
  • list() --转为列表

  • tuple()–转为元组

      num_tuple = (5,6,7)
      print(type(num_tuple))
      print(type(list(num_tuple)))
      num_list = [1,2,3,4]
      print(type(num_list))
      print(type(tuple(num_list)))
    
2.4 字典
  • 由键值对组成,字典用{}表示,键和值之间使用:
  • .键(key)必须是唯一的,但值则不必。
  • 值(value)可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
  • 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,
2.4.1 字典与列表的区别:
  • 列表是有序的对象的集合(有序表示按照索引可以取值)
  • 字典是无序的对象集合
2.4.2 字典的操作
xiaoming = {"name":"小明",
	            "age":20,
	            "身高":1.80}
# 1.取值
print(xiaoming["name"])

# 2.增加键值对
xiaoming["专业"] = "IT"

# 3.修改值
xiaoming["age"] = 18

# 4.删除
#如果指定删除的键值对不存在,则程序会报错
xiaoming.pop("name")
print(xiaoming)	

# 5.统计键值对的数量
len(xiaoming)

# 6.合并字典
#如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
temp = {"height":1.80,"age":30}
xiaoming.update(temp)
print(xiaoming)

# 7.清空
xiaoming.clear()
2.4.3 遍历字典:
演示一:
xiaoming = {"name":"小明",
        "age":20,
        "身高":1.80}
#变量k是每一次循环中,获取到的键值对的key
for k in xiaoming:
	print("%s-%s" %(k,xiaoming[k]))
	
结果为:
name-小明
age-20
身高-1.8

演示二:
将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理。
card_list = [
{"name":"小明",
 "age": 20,
 "身高": 1.80},
{"name":"张三",
 "qq":"123456",
 "phone":'10086'}
]

for card_info in card_list:
    print(card_info)
2.4.4遍历升级版
1.字典的遍历:关键字和对应的值可以使用 items() 方法同时解读出来:
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
...     print(k, v)
...
gallahad the pure
robin the brave

2.在序列中遍历时,索引位置和对应值可以使用 enumerate() 函数同时得到:
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...     print(i, v)
...
0 tic
1 tac
2 toe

3.同时遍历两个或更多的序列,可以使用 zip() 组合:
>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
...     print('What is your {0}?  It is {1}.'.format(q, a))
...
What is your name?  It is lancelot.
What is your quest?  It is the holy grail.
What is your favorite color?  It is blue.

4.要反向遍历一个序列,首先指定这个序列,然后调用 reversed() 函数:
>>> for i in reversed(range(1, 10, 2)):
...     print(i)
...
9
7
5
3
1

5.要按顺序遍历一个序列,使用 sorted() 函数返回一个已排序的序列,并不修改原值:
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
...     print(f)
...
apple
banana
orange
pear	
3. 切片
  • 切片使用索引值来限定范围,适用于字符串、元组、列表
  • 字典不能进行切片
  • 左边右开,即不包含结束索引的元素
    格式:
    字符串[开始索引:结束索引:步长]
3.1切片演示
>>> num_str = "012345678"
>>> num_str[2:6]
	'2345'
>>> num_str[0:]
	'012345678'
>>> num_str[::2]
	'02468'
>>> num_str[1::2]
	'1357'
>>>num_str[2:-1]
	'234567'
>>>num_str[-1]
	'8'
>>>num_str[-2]
	'7'
>>>num_str[0::-1]
	'0'
>>>num_str[-1::-1]
	'876543210'
>>>num_str[::-1]
	'876543210'
4.哈希(hash)

数据分为:

  • 不可变类型:
    • 数字,字符串。元组
  • 可变类型
    • 列表、字典
    • 字典的key只能使用不可变类型的数据

注意
- 可变类型的数据变化,是通过方法来实现的,不会改变内存地址。
- 如果给以一个可变类型的变量赋一个新的数据,引用会修改
- 变量不再对之前的数据引用
- 变量改为对新数据的数据引用。
查看一个数据的引用地址 采用id()函数

哈希(hash)

  • 是python的内置函数,为hash()函数
  • 接受一个不可变类型的数据作为参数
  • 返回结果是一个整数
  • 哈希是一种算法,其作用就是提取数据的特征码(相当于指纹)
    • 相同的内容得到相同的结果
    • 不同的内容得到不同的结果

在Python中,设置字典的键值对时,会首先对key进行hash,相当于检查,以便于对后续的增删改查操作。
- 键值对的key必须是不可变类型的数据
- 键值对的value可以是任意类型的数据

当key是可变类型的数据。时,则会出现以下错误

	TypeError: unhashable type: 'list'
代码演示:在这里插入图片描述
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小曾同学.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值