python 散列类型与格式化输出

简介: Python 简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

人生苦短,我学python


)

一、散列类型

1.数值类型:int float bool -> 存储一个数值

2.序列类型:str list tuple -> 存储多个元素

3.散列类型:set dict

散列类型的特征:

1. 无序 =》无下标

2. 内部元素不重复

1、 集合(set)

1.1 概念

集合(set) -> 负责存储【不重复的数据】,并且是【无序存储】的容器,主要用来去重和逻辑比较

1.2 性质

唯一性:元素唯一存在,不能重复

可变性:同列表意义,集合可以通过一些方法进行修改操作

无序性:集合没有办法访问或者操作指定位置的元素。

创建集合直接使用 {}

set1 = {1, 2, 3, 4, 1, 2, 6, 5, 7, 7, 7, 9, 8, 2, 8}
print(set1)  # 正常输出一个集合,里面的数据默认去重
print(set1[1]) # 散列类型无序的,不可以通过下标提取元素,报错
print(type(set1))

语法:

集合名 = {数据1,数据2,数据3,....} # 如果有重复数据,不会被添加到内存空间里面

注意:创建空集合的时候必须使用 set() ,而不能{},{}是表示空字典

集合的基本操作 --》 去重

li = [1, 2, 3, 4, 1, 2, 6, 5, 7, 7, 7, 9, 8, 2, 8]
利用集合帮助列表去重
se = set(li) # list->set 利用集合的唯一性去重
li = list(se) # 再将set-> list
print(li)

快速写法

li = list(set(li))
print(li)

1.3 运算

运算操作 Python运算符 含义
交集 & 取两集合公共的元素
并集 | 取两集合全部的元素
差集 - 取一个集合中另一集合没有的元素
成员运算 in 和 not in 判断一个某个元素是否在或者不在集合中

集合可以进行逻辑判断,集合的运算

集合1 & 集合2 --》判断交集   # shift + 7
集合1 | 集合2 --》判断并集   # sfhit + \
集合1 - 集合2 --》判断差集

交集:两个集合里面共有的数据

并集:两个集合里面的全部数据

差集:集合1 - 集合2 【集合1中减去和集合2共有的元素】【去掉交集之后的,结果就是差集】

set1 = {1, 2, 3}
set2 = {3, 4, 5}

& 交集:取两个集合的公共元素

print(set1 & set2)  # {3}

| 并集:取两个集合的全部元素

print(set1 | set2)

- 差集:减掉共有的

print(set1 - set2) # 以set1为全集,减去set1和set2共有的 12
print(set2 - set1) # 以set2为全集,减去set1和set2共有的 45

集合的作用:

1.存储非重复数据

2.用于将序列类型去重,逻辑判断(交集,并集,差集)

1.4 方法

add():参数为要添加的对象,通过多次添加数据可以发现添加后的元素位置不确定

s = {"111"}
s.add("222") 
print(s)
s.add("333") 
print(s)
s.add("444")
print(s)
s.add("555") 
print(s)

update() 参数为序列类型,会将序列元素拆分,随机添加到集合中

s = {"111"}
    lis = ['111', '222', '333', '444']
    s.update(lis)  # 将lis拆分,并随机插入
    print(s)

pop() : 删除第一个元素

仅在cmd运行时候,才会随时删除,pycharm对元素的地址进行了加强。所以python中默认保持删除第一个元素

remove(): 有参数,参数为要删除的元素,如果元素不存在则报错

```python
    s = {"111"}
    s.add("222")  
    print(s)
    s.add("333")  
    print(s)
    s.add("444") 
    print(s)
    s.add("555") 
    print(s)
    s.remove("222") 
    s.remove("111") 
    print(s)
    ```

clear():清空集合中的元素

2、字典(dict)

2.1 概念

字典(dict)是用来保存一些有典型的 ”对应关系“ 的数据类型,特点就是用键值对的方式来存储数据

键值对:key:value

字典的表现形式:

字典和集合一样也是用花括号,不过花括号里面如果存储的 键值对(说明关系的数据),那么它就是字典。

字典相比其他容器更适合描述一个对象

字典的创建语法格式

字典名 = {键名1:值 , 键名2:值 , .....} # 里面写的都是键值对

通讯录的存储

call = {
    "aaa": 10086,
    "bbb": 10010,
    "ccc": 10000,
    "ddd": 12010
}
表示个人名片
nr = {
    "姓名": "aaa",
    "年龄": 18,
    "工作": "摆烂"
}

字典的访问方式:

字典只能通过key去查询value

字典名[键] # 跟列表相似,但是列表是下标,字典是键

2.2 性质

1.无序没下标,字典是直接通过键值对的方式存储数据的,所以通过键来取值

字典名[键]

2.不重复字典的键是不能重复

dict2 = {"a": 1, "b": 2, "c": 3, "c": 4}
print(dict2) # 默认会覆盖,取最后一个键

3.可变性:字典里面的数据是可变的,而且允许嵌套

dict2 = {"a": 1, "b": 2, "c": 4}
    dict2['b'] = 100  # 直接赋值,修改
    print(dict2)
    dict2['b'] = ["bai","lan"]   # value还可以是 别的容器
    print(dict2)

2.3 方法

直接赋值

zd = {"a": 1, "b": 2}
  zd["c"] = 3 # 直接赋值增加
  zd["d"] = 4 # 直接赋值增加
  print(zd)

直接赋值

zd = {"a": 1, "b": 2 ,"c": 3}
  zd["c"] = 6 # 直接赋值 , 如果原本已经有了,那就是改,没有就是增
  zd["d"] = 7 # 增
  print(zd)

pop(键名) : 根据指定的键名,删除键值对

zd.pop("a") # 通过键名删除键值对
      print(zd)
  clear() : 清空字典,将字典变为空字典
      zd.clear()
      print(zd) # 空字典

get() : 通过键名,获取值

d = {"a": 1, "b": 2}
    # print(zd["c"])  # 如果键不存在会报错
    print(zd.get("c"))  # 如果键不存在不会报错

keys() : 获取所有的键,返回一个伪列表

values() : 获取所有的值,返回一个伪列表

zd = {"a": 1, "b": 2}
  print(zd.keys())  # ["a","b"]
  for i in zd.keys(): # 遍历key
      print(i)
  print(zd.values())  # [1,2]
  for i in zd.values():  # 遍历value
      print(i)

都是无下标,不可重复

二、字符串格式化

方便字符串里面携带变量

1、%方法(占位符)

在程序开发时候,有的时候不确定使用的数据具体是啥,就先占用一个位置,后续再使用值来填充

%也是分为不同种类型的

常见的占位符

%s = 字符串 =》占了一个位置,只能放字符串

%d = 整数 =》占了一个位置,只能放整数

%f = 小数=》默认保留6位小数点

%.1f -->保留一位小数

%.2f -->保留二位小数

%.xf -->保留x位小数

s = "我叫%s,我今年%d岁,体重是%.2f"  # 模板
print(s % ("111", 18, 155.5))
print(s % ("222", 19, 90.5))
print(s % ("333", 30, 13.5))
# 可以无限使用s这句话,不用再重复写,只需要提供数据即可

2、f-format

语法:在字符串前面加上f/F,把要输出的变量用大括号{}进行包囊

name = "摆烂阳"
age = 18
height = 177.7
# 大括号里面的数据,还可以直接操作
print(f"大家好,我叫{name[0]},我今年{age+1}岁,今年身高{height-1}")

其他

name = "摆烂阳"
age = 18
height = 177.7
# 字符串的方法 format 了解即可
print("大家好,我叫{},我今年{}岁,今年身高{}".format(name,age,height))


相关文章
|
1月前
|
存储 索引 Python
Python散列类型(1)
【10月更文挑战第9天】
|
1月前
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
67 0
|
1月前
|
存储 数据安全/隐私保护 索引
|
1月前
|
Python
【10月更文挑战第6天】「Mac上学Python 12」基础篇6 - 输入输出与格式化详解
本篇将详细介绍Python中的输入和输出函数,包括 `print()` 和 `input()` 函数的使用,涵盖格式化输出、类型转换及常见的字符串格式化方法。通过学习本篇,用户将掌握如何使用Python进行输入输出操作,并能灵活运用格式化输出处理数据。
59 1
【10月更文挑战第6天】「Mac上学Python 12」基础篇6 - 输入输出与格式化详解
|
1月前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
54 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
1月前
|
Python
【10月更文挑战第6天】「Mac上学Python 10」基础篇4 - 布尔类型详解
本篇将详细介绍Python中的布尔类型及其应用,包括布尔值、逻辑运算、关系运算符以及零值的概念。布尔类型是Python中的一种基本数据类型,广泛应用于条件判断和逻辑运算中,通过本篇的学习,用户将掌握如何使用布尔类型进行逻辑操作和条件判断。
61 1
【10月更文挑战第6天】「Mac上学Python 10」基础篇4 - 布尔类型详解
WK
|
1月前
|
存储 Python
Python内置类型名
Python 内置类型包括数字类型(int, float, complex)、序列类型(str, list, tuple, range)、集合类型(set, frozenset)、映射类型(dict)、布尔类型(bool)、二进制类型(bytes, bytearray, memoryview)、其他类型(NoneType, type, 函数类型等),提供了丰富的数据结构和操作,支持高效编程。
WK
17 2
|
1月前
|
存储 编译器 索引
Python 序列类型(2)
【10月更文挑战第8天】
Python 序列类型(2)
|
1月前
|
存储 C++ 索引
Python 序列类型(1)
【10月更文挑战第8天】
|
1月前
|
存储 Java Apache
Python Number类型详解!
本文详细介绍了 Python 中的数字类型,包括整数(int)、浮点数(float)和复数(complex),并通过示例展示了各种算术操作及其类型转换方法。Python 的 `int` 类型支持任意大小的整数,`float` 类型用于表示实数,而 `complex` 类型用于表示复数。此外,文章还对比了 Python 和 Java 在数字类型处理上的区别,如整数类型、浮点数类型、复数类型及高精度类型,并介绍了各自类型转换的方法。尽管两种语言在语法上有所差异,但其底层逻辑是相通的。通过本文,读者可以更好地理解 Python 的数字类型及其应用场景。
47 2