Python重点数据结构基本用法

Python重点数据结构用法

运算符描述
[] [:]下标,切片
**指数
~ + -按位取反, 正负号
* / % //乘,除,模,整除
+ -加,减
>> <<右移,左移
&按位与
^ ``
<= < > >=小于等于,小于,大于,大于等于
== !=等于,不等于
is is not身份运算符
in not in成员运算符
not or and逻辑运算符
= += -= *= /= %= //= **= &= `= ^=` `>>=` `<<=`

分支结构

ifelifelse

在Python中,要构造分支结构可以使用ifelifelse关键字。

循环结构

在Python中构造循环结构有两种做法,一种是for-in循环,另一种是while循环。

range

在Python中,range() 函数是一个非常实用的工具,主要用于生成一个不可变的数字序列。它通常用在循环(如 for 循环)中,以控制循环的次数。下面详细介绍 range() 函数的用法和一些示例。

用法

range() 函数可以有以下几种形式的参数:

  1. range(stop): 生成从0开始到 stop-1 的整数序列。
  2. range(start, stop): 生成从 start 开始到 stop-1 的整数序列。
  3. range(start, stop, step): 生成从 start 开始到 stop-1 的整数序列,增量为 step
参数说明
  • start: 序列的起始值,默认为0。
  • stop: 序列的结束值,但不包括此值。
  • step: 序列中每个数的增量,默认为1。如果 step 是正数,序列递增;如果是负数,序列递减。
示例
  1. 使用一个参数:

    for i in range(5):print(i)
    # 输出: 0, 1, 2, 3, 4
    
  2. 使用两个参数:

    for i in range(3, 8):print(i)
    # 输出: 3, 4, 5, 6, 7
    
  3. 使用三个参数(正步长):

    for i in range(10, 20, 2):print(i)
    # 输出: 10, 12, 14, 16, 18
    
  4. 使用三个参数(负步长):

    for i in range(20, 10, -2):print(i)
    # 输出: 20, 18, 16, 14, 12
    
注意事项
  • range() 生成的是一个 range 对象,而不是列表。这意味着它在任何时间点只保存起始点、终点和步长,而不是整个列表,这有助于节省内存。
  • 你可以使用 list(range(...)) 来查看 range 对象生成的完整列表。
适用场景
  • 控制循环次数。
  • 生成数值列表。
  • 递增或递减数列的生成。

range() 因其简洁和内存效率而在Python编程中广泛使用,特别是在需要明确次数的循环中非常有用。

列表

列表生成式(list comprehensions)

在Python中,列表生成式(list comprehensions)提供了一种简洁且高效的方式来创建列表。这种方法可以用来从其他列表或任何可迭代对象中创建新列表,同时可以在创建时对数据进行处理和过滤。

基本语法

列表生成式的基本语法如下:

[expression for item in iterable if condition]

这里的各部分意义为:

  • expression: 用于产生列表中的元素的表达式,可以是对 item 的计算或其它操作。
  • item: 是 iterable 中的当前元素。
  • iterable: 任何Python可迭代对象。
  • condition: 一个可选的条件语句,用于筛选符合条件的元素。
示例

让我们通过一些具体示例来看看如何使用列表生成式:

  1. 基础示例 - 生成一个数值列表:
squares = [x**2 for x in range(10)]
print(squares)
# 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  1. 使用条件过滤 - 只包含偶数的平方:
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)
# 输出: [0, 4, 16, 36, 64]
  1. 对字符串列表操作 - 将所有单词转换为大写形式:
words = ['hello', 'world', 'python', 'is', 'awesome']
upper_words = [word.upper() for word in words]
print(upper_words)
# 输出: ['HELLO', 'WORLD', 'PYTHON', 'IS', 'AWESOME']
  1. 嵌套列表生成式 - 生成一个二维数组(矩阵):
matrix = [[j for j in range(5)] for i in range(3)]
print(matrix)
# 输出: [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
  1. 从列表中提取元素的特定属性 - 例如从字典列表中提取特定键的值:
dict_list = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}, {'name': 'Cathy', 'age': 22}]
names = [d['name'] for d in dict_list]
print(names)
# 输出: ['Alice', 'Bob', 'Cathy']
  1. 使用多个迭代器 - 创建一个笛卡尔积(从两个列表中创建元组的所有可能组合):
colors = ['red', 'blue', 'green']
sizes = ['S', 'M', 'L']
tshirts = [(color, size) for color in colors for size in sizes]
print(tshirts)
# 输出: [('red', 'S'), ('red', 'M'), ('red', 'L'), ('blue', 'S'), ('blue', 'M'), ('blue', 'L'), ('green', 'S'), ('green', 'M'), ('green', 'L')]
  1. 结合函数调用 - 使用列表生成式运行函数:
def square(x):return x * xsquares = [square(x) for x in range(5)]
print(squares)
# 输出: [0, 1, 4, 9, 16]
  1. 复杂条件 - 生成一个列表,包含小于100的非平方数:
non_squares = [x for x in range(100) if x not in [y**2 for y in range(10)]]
print(non_squares)
# 这会输出0到99之间所有非平方数的列表

列表生成式是Python中一种非常强大且常用的特性,它可以使代码更加简洁易读,同时在很多情况下也能提高程序的执行效率。通过掌握列表生成式,你可以有效地简化代码并减少冗长的循环和条件判断语句。

嵌套列表

嵌套列表是Python中的一种数据结构,指的是列表中包含一个或多个列表。这种结构非常适用于表示矩阵、网格或其他形式的多维数据。通过嵌套列表,我们可以方便地模拟二维或更高维度的数组。下面将介绍如何创建和操作嵌套列表。

创建嵌套列表

基础示例

创建一个简单的嵌套列表:

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(nested_list)
# 输出: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

这个例子创建了一个3x3的矩阵,类似于数学中的矩阵。

列表生成式创建嵌套列表

使用列表生成式来创建一个二维列表(矩阵):

matrix = [[j for j in range(5)] for i in range(3)]
print(matrix)
# 输出: [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
访问嵌套列表元素

要访问嵌套列表中的元素,需要通过多个索引来访问:

print(nested_list[0][1])  # 访问第一行的第二个元素
# 输出: 2
遍历嵌套列表

遍历嵌套列表通常需要使用嵌套循环:

for row in nested_list:for item in row:print(item, end=' ')print()
# 输出:
# 1 2 3
# 4 5 6
# 7 8 9
修改嵌套列表

修改嵌套列表中的元素同样需要通过索引进行:

nested_list[0][0] = 10
print(nested_list)
# 输出: [[10, 2, 3], [4, 5, 6], [7, 8, 9]]
嵌套列表的高级操作
  • 扁平化嵌套列表

将嵌套列表转换成一维列表:

flattened = [item for sublist in nested_list for item in sublist]
print(flattened)
# 输出: [10, 2, 3, 4, 5, 6, 7, 8, 9]
  • 转置矩阵

使用嵌套列表生成式来转置一个矩阵:

transposed = [[nested_list[j][i] for j in range(len(nested_list))] for i in range(len(nested_list[0]))]
print(transposed)
# 输出: [[10, 4, 7], [2, 5, 8], [3, 6, 9]]

嵌套列表是处理多维数据时非常有用的工具,掌握它们的使用可以在多种编程任务中帮助你更有效地组织和处理数据。

元组

元组打包和解包

在Python中,元组打包和解包是一种便捷的数据操作方式,它使得我们可以在没有中间变量的情况下,轻松地从元组中提取值或将多个值组合成一个元组。这两种操作在Python编程中非常有用,特别是在函数参数传递和多变量赋值场景中。

元组打包 (Tuple Packing)

元组打包是将多个值组合成一个元组的过程。这不需要特殊的语法;你只需要将多个值用逗号隔开,Python就会自动将它们打包成一个元组。

示例:

# 元组打包
my_tuple = 1, 2, 3
print(my_tuple)
# 输出: (1, 2, 3)

在这个例子中,数字1, 2, 和 3被打包成一个元组 my_tuple

元组解包 (Tuple Unpacking)

元组解包允许你将一个元组(或任何可迭代对象)的元素分配给一组变量。这是一种非常方便的方式,可以一次性将元组中的所有值分配给相应数量的变量。

示例:

# 元组解包
a, b, c = my_tuple
print(a)  # 输出: 1
print(b)  # 输出: 2
print(c)  # 输出: 3

在这个例子中,my_tuple 中的元素被解包到变量 a, b, c 中。

高级元组解包

元组解包可以使用 * 运算符来执行更高级的操作,比如解包列表的一部分,而其余部分可以分配给另一个变量。

示例:

# 高级元组解包
data = (1, 2, 3, 4, 5)
first, *middle, last = data
print(first)   # 输出: 1
print(middle)  # 输出: [2, 3, 4]
print(last)    # 输出: 5

在这个例子中,first 被赋值为1,last 被赋值为5,而剩余的元素2, 3, 4被打包成一个列表赋值给 middle

元组解包在函数中的应用

元组解包可以用来传递参数给函数。使用 * 操作符,你可以将列表或元组的元素直接作为参数传递给函数。

示例:

def my_func(x, y, z):print(x, y, z)args = (1, 2, 3)
my_func(*args)
# 输出: 1 2 3

在这个例子中,args 元组被解包,并且它的每个元素都按顺序被传递给了 my_func 函数作为参数。

元组的打包和解包特性大大提高了Python代码的简洁性和可读性,尤其在处理函数参数和多变量赋值时非常有用。

字符串

字符串的切片

字符串切片是Python中一种非常有用的功能,允许你从一个字符串中提取子字符串。使用切片操作,你可以指定开始索引、结束索引和步长来获取字符串的一部分。

切片语法

字符串的切片语法如下:

string[start:stop:step]

其中:

  • start(可选)- 切片的起始位置,包括此位置的字符。如果省略,切片将从字符串的开头开始。
  • stop(可选)- 切片的结束位置,不包括此位置的字符。如果省略,切片将一直进行到字符串的末尾。
  • step(可选)- 切片的步长,表示从一个字符到下一个字符的距离。如果省略,默认为1,即获取每个字符。
示例

这里有一些基本示例来说明字符串切片是如何工作的:

s = "Hello, world!"# 从位置2到位置7(不包括7)
print(s[2:7])  # 输出: llo, # 从开头切片到位置5
print(s[:5])   # 输出: Hello# 从位置7切片到末尾
print(s[7:])   # 输出: world!# 完整的字符串
print(s[:])    # 输出: Hello, world!# 每两个字符取一个
print(s[::2])  # 输出: Hlo ol!# 负数索引,从倒数第三个字符切片到倒数第一个
print(s[-3:-1]) # 输出: ld# 字符串逆序
print(s[::-1])  # 输出: !dlrow ,olleH
使用场景

字符串切片非常适用于从较大的文本数据中提取需要的信息。例如,从日期字符串中提取年、月、日,或从URL中提取特定部分。此外,通过逆序切片操作,可以方便地实现字符串的反转。

注意事项
  • 如果 startstop 指定的索引超出了字符串的边界,Python将会自动处理,不会引发错误。
  • 如果 start 大于 stop 的值,并且步长为正,或者 start 小于 stop 并且步长为负,则结果为空字符串。
  • 切片不会修改原字符串,而是生成一个新的字符串。

通过灵活使用切片,你可以高效地处理字符串数据,这是掌握Python字符串操作的关键技能之一。

集合set

Python中的集合底层使用了哈希存储的方式

创建集合

在 Python 中,集合(set)是一个无序的、不重复的元素集。集合用于存储唯一的元素,并且提供了多种有用的操作,如并集、交集、差集和对称差等,非常适用于数学中的集合操作。

使用大括号 {}

你可以使用大括号来创建一个集合。如果你创建一个空集合,必须使用 set(),因为空的大括号 {} 用于创建空字典。

# 创建一个包含一些元素的集合
my_set = {1, 2, 3, 4, 5}
print(my_set)  # 输出: {1, 2, 3, 4, 5}# 创建一个空集合
empty_set = set()
print(empty_set)  # 输出: set()
使用 set() 构造函数

你也可以使用 set() 构造函数来从任何可迭代对象创建集合,例如列表、元组、字典的键等。

# 从列表创建集合
list_set = set([1, 2, 3, 3, 2, 1])
print(list_set)  # 输出: {1, 2, 3}# 从字符串创建集合
string_set = set("hello")
print(string_set)  # 输出: {'e', 'h', 'l', 'o'}# 从元组创建集合
tuple_set = set((1, 2, 3, 4, 4, 3))
print(tuple_set)  # 输出: {1, 2, 3, 4}

注意,当从包含重复元素的列表或元组创建集合时,重复的元素将被自动去除,因为集合不允许重复的元素。

特性
  • 无序:集合中的元素没有特定的顺序。
  • 唯一性:集合自动去除重复元素。
  • 不支持索引:由于集合是无序的,所以你不能通过索引来访问或修改集合中的元素。
操作集合

集合支持多种操作,包括但不限于:

  • 添加元素:add()
  • 删除元素:remove()(如果元素不存在,则抛出 KeyError)、discard()(如果元素不存在,不会抛出错误)
  • 检查成员资格:使用 in 关键字
  • 集合的数学运算:如并集(union()|)、交集(intersection()&)、差集(difference()-)、对称差(symmetric_difference()^

集合是处理不需要重复元素的数据集时的有力工具。例如,如果你需要快速检查元素是否存在于某个数据集中,或者需要执行集合之间的运算,使用集合是一个非常合适的选择。

字典(dictionary)

这种数据类型最适合把相关联的信息组装到一起,并且可以帮助我们解决程序中为真实事物建模的问题。

创建和使用字典

在 Python 中,字典(dictionary)是一种非常灵活的数据结构,用于存储键值对。每个键映射到一个值,字典通过键而不是像列表那样通过偏移来索引。字典是无序的集合(在 Python 3.7+ 中是按插入顺序排序的),并且键必须是唯一的。

创建字典
使用花括号 {}

你可以使用花括号创建字典,并使用逗号来分隔键值对。

# 创建一个简单的字典
my_dict = {"name": "John", "age": 30, "city": "New York"}
print(my_dict)  # 输出: {'name': 'John', 'age': 30, 'city': 'New York'}# 创建一个空字典
empty_dict = {}
print(empty_dict)  # 输出: {}
使用 dict() 构造函数

dict() 构造函数可以通过其他方式创建字典,如通过键值对列表或通过关键字参数。

# 使用键值对列表
dict_from_pairs = dict([("name", "Alice"), ("age", 24), ("city", "Boston")])
print(dict_from_pairs)  # 输出: {'name': 'Alice', 'age': 24, 'city': 'Boston'}# 使用关键字参数
dict_from_keywords = dict(name="Bob", age=25, city="Chicago")
print(dict_from_keywords)  # 输出: {'name': 'Bob', 'age': 25, 'city': 'Chicago'}
使用字典
访问元素

你可以通过键来访问字典中的元素。

name = my_dict["name"]
print(name)  # 输出: John# 使用 get 方法,如果键不存在时返回 None,而不是抛出异常
age = my_dict.get("age")
print(age)  # 输出: 30
添加和修改元素

添加或修改字典的元素同样简单。

# 添加新键值对
my_dict["email"] = "john@example.com"
print(my_dict)  # 输出: {'name': 'John', 'age': 30, 'city': 'New York', 'email': 'john@example.com'}# 修改现有键的值
my_dict["email"] = "john.doe@example.com"
print(my_dict)  # 输出: {'name': 'John', 'age': 30, 'city': 'New York', 'email': 'john.doe@example.com'}
删除元素

你可以使用 del 语句或 pop() 方法删除字典中的元素。

# 使用 del 删除元素
del my_dict["email"]
print(my_dict)  # 输出: {'name': 'John', 'age': 30, 'city': 'New York'}# 使用 pop 移除元素并获取其值
city = my_dict.pop("city")
print(city)  # 输出: New York
print(my_dict)  # 输出: {'name': 'John', 'age': 30}
遍历字典

字典可以通过多种方式遍历。

# 遍历所有键
for key in my_dict:print(key)# 遍历所有值
for value in my_dict.values():print(value)# 遍历所有键值对
for key, value in my_dict.items():print(key, value)
实用性

字典在 Python 中非常有用,广泛用于需要快速按键索引数据的情况。例如,它们经常用于缓存数据、处理 API 响应、配置设置、计数和数据汇总等场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信公众号菜单管理接口开发

1、创建数据表 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;-- ---------------------------- -- Table structure for wx_menu -- ---------------------------- DROP TABLE IF EXISTS `wx_menu`; CREATE TABLE `wx_menu` (`id` bigint(20) NOT NULL AUTO_INCREMENT COM…

学pyhton的第二十二天

原文链接&#xff1a;Python 图形化界面设计&#xff08;Tkinter&#xff09; - 简书 (jianshu.com) 相关博客链接 接第十八天Tkinter的内容&#xff1a; 单选按钮&#xff08;控件&#xff1a;Radiobutton&#xff09;&#xff1a; 除共有属性外&#xff0c;还具有显示文本…

数据结构 : 树的分类及在数据库索引中的运用

文章目录 一 &#xff1a;树的分类1、二叉树&#xff08;Binary Tree&#xff09;&#xff1a;2、二叉搜索树&#xff08;Binary Search Tree, BST&#xff09;&#xff1a;3、平衡二叉树&#xff1a;4、字典树&#xff08;Trie&#xff09;&#xff1a;5、多叉树&#xff08;M…

算法学习笔记Day9——动态规划基础篇

一、介绍 本文解决几个问题&#xff1a;动态规划是什么&#xff1f;解决动态规划问题有什么技巧&#xff1f;如何学习动态规划&#xff1f; 1. 动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法&#xff0c;只不过在计算机问题上应用比较多&#xff…

opencv_17_翻转与旋转

一、图像翻转 1&#xff09;void flip_test(Mat& image); 2&#xff09;void ColorInvert::flip_test(Mat& image) { Mat dst; //flip(image, dst, 0); //上下翻转 flip(image, dst, 1); //左右翻转 // flip(image, dst, -1); //180度翻转 imsho…

OpenVINO安装教程 vcpkg版

通过 vcpkg 安装 OpenVINO™ Runtime 请注意&#xff0c;vcpkg 发行版&#xff1a; 仅提供 C/C API 不支持 NPU 推理 专用于所有主要操作系统的用户&#xff1a;Windows、Linux 和 macOS &#xff08;所有 x86_64 / ARM64 架构&#xff09; 系统要求处理器说明软件要求 完整…

B站美化插件,支持自定义,太酷辣~

大公司的软件和网站通常具有优雅的默认界面设计。 以国内二次元聚集地B站为例&#xff0c;可以说它的UI设计非常吸引人。与其他视频网站繁复的设计相比&#xff0c;B站的界面设计可以说是遥遥领先 然而&#xff0c;总有些人对默认的用户界面感到不满意&#xff0c;他们渴望尝试…

接口自动化测试框架

接口自动化测试框架&#xff1a;pythonunittest/pytestrequestsddtopenpyxlpymysqllogging 框架设计思路数据驱动结构分层&#xff08;可读性、可维护性、可扩展性&#xff09;数据驱动将维护数据与代码分离&#xff0c;接口调用行为一致&#xff0c;针对不同的参数组合驱动不同…

fiddler提示“The system proxy was changed.Click to reenable capturing.”的原因及解决办法

一、现象描述 运行fiddler时&#xff0c;提示“The system proxy was changed.Click to reenable capturing.”&#xff0c;即使点击了该提示&#xff0c;重新进行抓包&#xff0c;不一会儿&#xff0c;该提示又会出现&#xff0c;又不能进行抓包了。 二、解决方法 2.1 原因一&…

Java 高级面试问题及答案

Java 高级面试问题及答案 问题 1: 在 Java 中&#xff0c;什么是强引用、软引用、弱引用和虚引用&#xff1f;它们分别有什么用途&#xff1f; 探讨过程&#xff1a; 在Java中&#xff0c;对象的引用类型决定了垃圾回收器如何回收对象。强引用是最常见的&#xff0c;它阻止垃…

java 根据对象的boolean字段对集合进行排序

java 根据对象的boolean字段对集合进行排序 ‍ 需求大概如下&#xff1a; 把boolean为true的排序到前面,false排序到后面 ‍ 排序后, boolean为true的会在前面, 为false的会在后面 , isHasMaterial 为boolean类型 Data Builder public class MoguPoiBaseInfo {/*** 是否有…

输电线路的“天眼”:双目协同图像视频监测装置

在广袤的天地之间&#xff0c;纵横交错的输电线路如同血脉一般&#xff0c;为我们的生活输送着源源不断的电力。然而&#xff0c;这些“血脉”也常常面临着各种挑战&#xff0c;如外力破坏、恶劣天气等。为了守护这些重要的“生命线”&#xff0c;鼎信智慧研发了一款智能监控设…

LeetCode 1146. 快照数组【哈希表+二分查找】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

云原生Kubernetes: K8S 1.29版本 部署GitLab

目录 一、实验 1.环境 2.搭建NFS 3.K8S 1.29版本 部署Redis 4.K8S 1.29版本 部署Postgresql 5.K8S 1.29版本 部署GitLab 6.K8S 部署istio微服务 7.K8S 部署ingress应用路由 二、问题 1.K8S部署gitlab报错 2.gitlab创建失败 3.生成网关资源报错 4.安装istio 报错 …

APP自定义身份证相机(Android +iOS)

基本上同时兼容安卓和苹果的插件都需要付费&#xff0c;这里我找了2个好用的免费插件 1.仅支持安卓&#xff1a;自定义身份证相机&#xff08;支持蒙版自定义&#xff09;&#xff0c;内置蒙版&#xff0c;照片预览&#xff0c;身份证裁剪 - DCloud 插件市场、 2.支持iOS(已测…

打水问题(贪心算法)

题目&#xff1a;有n个人排队到r个水龙头去打水&#xff0c;他们装满水桶的时间t1、t2………tn为整数且各不相等&#xff0c;应如何安排他们的打水顺序才能使他们总共花费的时间最少&#xff1f;通过键盘输入排队打水的人数以及每人打水的时间和水龙头数&#xff0c;使用贪心算…

泰迪智能科技受邀参加2024年粤港澳大湾区产教融合技能人才培养联盟理事会会议

4月24日下午&#xff0c;2024年粤港澳大湾区产教融合技能人才培养联盟&#xff08;以下简称联盟&#xff09;理事会会议在白云区成功举办。 会议由广州市人力资源和社会保障局、广州市发展和改革委员会、广州市教育局、广州市工业和信息化局、广州市总工会等单位指导&#xff…

Python实现对规整的二维列表中每个子列表对应的值求和

目录 一、二维列表及其结构 二、对应位置元素求和的逻辑 三、代码实现 四、优化与改进 五、实际应用场景 六、扩展与变体 七、总结 在Python编程中&#xff0c;处理二维列表&#xff08;即列表的列表&#xff09;是一个常见的任务。有时候我们需要对二维列表中每个子列表…

多线程编程7——wait和notify、notifyAll

线程最大的问题就是抢占式执行&#xff0c;随机调度。可以通过一些API让线程主动阻塞&#xff0c;主动放弃CPU&#xff0c;从而控制线程之间的执行顺序。比如&#xff1a;join&#xff0c;sleep&#xff0c;wait和notify、notifyAll 前面章节已经介绍过 join 和 sleep了&#…

计算机网络-IPv6地址规范与分类

昨天学习了IPv6的基础概念&#xff0c;了解了IPv6的由来以及地址格式&#xff0c;今天继续学习下IPv6的地址分类与表示。 一、IPv6地址缩写规范 IPv6地址的长度为128 bit。一般用冒号分割为8段&#xff0c;每一段16 bit&#xff0c;每一段内用十六进制表示。 IPv6地址格式 那12…