python数组增加元素
append、appext、insert,在某位置插入insert最在行。
(笔记模板由python脚本于2024年12月04日 19:41:46创建,本篇笔记适合python基础编程的coder翻阅)
-
Python 官网:https://www.python.org/
-
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
- My CSDN主页、My HOT博、My Python 学习个人备忘录
- 好文力荐、 老齐教室
本文质量分:
本文地址: https://blog.csdn.net/m0_57158496/
CSDN质量分查询入口:http://www.csdn.net/qc
- ◆ python数组增加元素
- 一、题目描述
- 二、算法解析
- 2.1 任务分解:
- 2.2 Python 代码实现
- 2.3 代码解释
- 2.4 示例运行
- 三、题解
- 3.1 示例题解
- 3.2 精细题解
- 四、完整源码(Python)
◆ python数组增加元素
一、题目描述
题目描述截屏图片

【题目来源于 CSDN 问答社区提问“问题标题”】
这是一道C++小题,在问答社区看到,怪手痒痒的,用仅会的python基础来拆解拆解——
二、算法解析
根据题目描述,我们需要编写一个Python程序来模拟班级中新同学的座位安排。
以下是详细的步骤和代码分析:
2.1 任务分解:
-
输入处理:
- 读取班级总人数
n。 - 读取当前班级中每位同学的学号列表。
- 读取新同学的学号。
- 读取两个整数
p和q,表示新同学的位置关系。
- 读取班级总人数
-
逻辑处理:
- 根据输入的
p和q,确定新同学在班级中的具体位置。 - 如果
p为 1,新同学坐在第q个同学的前面。 - 如果
p不为 1,新同学坐在第q个同学的后面。
- 根据输入的
-
输出处理:
- 输出新同学安排好后,班级中每位同学的学号列表。
2.2 Python 代码实现
python脚本
# 读取输入
n = int(input()) # 班级总人数
current_students = list(map(int, input().split())) # 当前班级中每位同学的学号
new_student_id = int(input()) # 新同学的学号
p, q = map(int, input().split()) # 两个整数 p 和 q# 根据输入的 p 和 q 确定新同学的位置
if p == 1:# 新同学坐在第 q 个同学的前面new_position = q - 1
else:# 新同学坐在第 q 个同学的后面new_position = q# 在指定位置插入新同学的学号
current_students.insert(new_position, new_student_id)# 输出结果
print(' '.join(map(str, current_students)))
2.3 代码解释
- 输入处理:使用
input()函数读取输入,并通过map(int, input().split())将字符串转换为整数列表。 - 逻辑处理:根据
p和q的值,使用insert()方法将新同学的学号插入到列表中的指定位置。 - 输出处理:使用
print()函数输出最终的学号列表,通过' '.join(map(str, ...))将列表转换为以空格分隔的字符串。
2.4 示例运行
假设输入为:
5
7 1 3 14 5
56
0 2
则输出为:
7 1 56 3 14 5
解释:p 为 0,q 为 2,新同学学号 56 插入到第 2 个同学 1 的后面,所以最终学号列表为 7 1 56 3 14 5。
三、题解
3.1 示例题解
#!/usr/bin/env python3date = '''5
7 1 3 14 5
56
0 2''' # 输出 7 1 56 3 14 5
print(f"\n\n{' 数组增加元素 ':*^36}"f"\n\n输入样例:\n{date}") # 数据梳理 #
date = date.split('\n')
n = int(date[0]) # 班级同学人数0 < n < 60
students = list(map(int, date[1].split())) # 班级同学列表(学号列表)
new_stu = int(date[2])
p, q = map(int, date[-1].split()) # p,新同学排位前后“开关”;q,新同学排位入口
print(f"\n数据梳理:"f"\n{n = }\n{students = }"f"\n{new_stu = }\n{p = }, {q = }")# 新同学排位 #
new_index = q-1 if p == 1 else q # 确认新同学排位入口
print(f"\n{new_index = }")
students.insert(new_index, new_stu) # 新同学排位(list插入,list.insert方法是在index之前插入,就“抵消”list元素对象从0起index。所以,直接new_stu插入)
students = ' '.join(map(str, students))
print(f"\n输出:"f"\n{students = }"f"\n\n{'':=^42}")
效果截屏

这个题解直接处理了一个硬编码的字符串 date,该字符串包含了班级同学的人数、现有同学的学号列表、新同学的学号以及新同学插入位置的参数 p 和 q。
-
数据梳理:
- 首先将输入的字符串按照换行符分割成列表。
- 提取班级同学人数
n和现有同学的学号列表students。 - 提取新同学的学号
new_stu。 - 提取参数
p和q,其中p决定新同学是插入到q指定的位置之前还是之后,q是新同学的入口位置。
-
新同学排位:
- 根据
p的值确定新同学的插入位置new_index。如果p为 1,新同学将插入到q之前,因此new_index为q-1;否则,新同学将插入到q位置。 - 使用
list.insert()方法在students列表中插入新同学的学号new_stu。 - 将更新后的学号列表转换为字符串并打印。
- 根据
3.2 精细题解
# 精细解题 #def data_input() -> tuple:''' 数据输入 '''print(f"\n\n{' 数组增加元素 ':*^36}") try:n = int(input(f"\n输入班级同学人数"f"\n{'(0 < n < 60):':>15}"))except ValueError:raise ValueError(f"{' 请输入整数 ':-^37}")if not (0 < n < 60):raise ValueError(f"\n{' 班级同学人数必须在0到60之间 ':-^30}")students = list(map(int, input(f"输入班级同学学号:\n{'如7 1 3 14 5':>27}\n{'':>18}").strip().split())) # 班级同学列表(学号列表)if len(students) != n:raise ValueError(f"\n{' 输入的学号数量与班级人数不符 ':-^28}")try:new_stu = int(input('输入新同学学号:'))except ValueError as e:raise ValueError(f"{' 请输入整数 ':-^37}")try:p, q = map(int, input(f"输入p和q的值,用空格分隔\n{'(q为大于等于1的整数)':>10}:").strip().split())except ValueError as e:raise ValueError(f"{' 请输入两个整数':-^35}")if q < 1:raise ValueError(f"{' q的值必须大于等于1 ':-^34}")return n, students, new_stu, p, qdef in_date():''' 递归数据输入函数 '''try:return data_input()except ValueError as e:print(f"\n{e}"f"\n\n{' 请根据提示重新输入 ':.^33}")return in_date()# 调用递归函数并获取数据
n, students, new_stu, p, q = in_date()# 根据q的值插入新同学
new_index = q-1 if p == 1 else q # 保证当p不是1时,在q之后安排新同学入座
students.insert(new_index, new_stu) # 新同学排位(list插入,list.insert方法是在index之前插入,就“抵消”list元素对象从0起index。所以,直接new_stu插入)# 打印结果
print(f"\n输出:"f"\n{' '.join(map(str, students))}"f"\n\n{'':=^42}")
效果截屏

这个题解提供了一个更加通用的解决方案,它允许用户输入数据而不是使用硬编码的字符串。
-
数据输入:
data_input()函数用于从用户那里获取输入数据,包括班级同学人数n、现有同学的学号列表students、新同学的学号new_stu以及插入位置的参数p和q。- 函数内部包含错误处理,确保用户输入的是有效的整数,并且输入的学号数量与班级人数相符。
-
递归数据输入函数:
in_date()函数是一个递归函数,它调用data_input()并处理任何由无效输入引起的ValueError异常。如果发生错误,它会提示用户重新输入数据。
-
数据处理和输出:
- 从
in_date()函数获取输入数据后,程序计算新同学的插入位置new_index。 - 使用
list.insert()方法将新同学插入到正确的位置。 - 最后,将更新后的学号列表转换为字符串并打印。
- 从
这两个题解都很好地展示了如何使用 Python 的列表操作来插入元素,同时也展示了如何处理用户输入和错误。第二个题解通过使用递归和异常处理,提供了更加健壮和用户友好的解决方案。😎😎
四、完整源码(Python)
(源码较长,点此跳过源码)
#!/usr/bin/env python3date = '''5
7 1 3 14 5
56
0 2''' # 输出 7 1 56 3 14 5
print(f"\n\n{' 数组增加元素 ':*^36}"f"\n\n输入样例:\n{date}") # 数据梳理 #
date = date.split('\n')
n = int(date[0]) # 班级同学人数0 < n < 60
students = list(map(int, date[1].split())) # 班级同学列表(学号列表)
new_stu = int(date[2])
p, q = map(int, date[-1].split()) # p,新同学排位前后“开关”;q,新同学排位入口
print(f"\n数据梳理:"f"\n{n = }\n{students = }"f"\n{new_stu = }\n{p = }, {q = }")# 新同学排位 #
new_index = q-1 if p == 1 else q # 确认新同学排位入口
print(f"\n{new_index = }")
students.insert(new_index, new_stu) # 新同学排位(list插入,list.insert方法是在index之前插入,就“抵消”list元素对象从0起index。所以,直接new_stu插入)
students = ' '.join(map(str, students))
print(f"\n输出:"f"\n{students = }"f"\n\n{'':=^42}")# 精细解题 #def data_input() -> tuple:''' 数据输入 '''print(f"\n\n{' 数组增加元素 ':*^36}") try:n = int(input(f"\n输入班级同学人数"f"\n{'(0 < n < 60):':>15}"))except ValueError:raise ValueError(f"{' 请输入整数 ':-^37}")if not (0 < n < 60):raise ValueError(f"\n{' 班级同学人数必须在0到60之间 ':-^30}")students = list(map(int, input(f"输入班级同学学号:\n{'如7 1 3 14 5':>27}\n{'':>18}").strip().split())) # 班级同学列表(学号列表)if len(students) != n:raise ValueError(f"\n{' 输入的学号数量与班级人数不符 ':-^28}")try:new_stu = int(input('输入新同学学号:'))except ValueError as e:raise ValueError(f"{' 请输入整数 ':-^37}")try:p, q = map(int, input(f"输入p和q的值,用空格分隔\n{'(q为大于等于1的整数)':>10}:").strip().split())except ValueError as e:raise ValueError(f"{' 请输入两个整数':-^35}")if q < 1:raise ValueError(f"{' q的值必须大于等于1 ':-^34}")return n, students, new_stu, p, qdef in_date():''' 递归数据输入函数 '''try:return data_input()except ValueError as e:print(f"\n{e}"f"\n\n{' 请根据提示重新输入 ':.^33}")return in_date()# 调用递归函数并获取数据
n, students, new_stu, p, q = in_date()# 根据q的值插入新同学
new_index = q-1 if p == 1 else q # 保证当p不是1时,在q之后安排新同学入座
students.insert(new_index, new_stu) # 新同学排位(list插入,list.insert方法是在index之前插入,就“抵消”list元素对象从0起index。所以,直接new_stu插入)# 打印结果
print(f"\n输出:"f"\n{' '.join(map(str, students))}"f"\n\n{'':=^42}")
上一篇: re通配表达式从“硬编码”到精炼简洁的历程示例(本文举例说明“re表达式从繁至简的历程”:源于对匹配字符串格式的详细把控,得益于对re通配符含义的深切理解。文章语言朴实,步步深入,浅析简单逻辑)
下一篇:
我的HOT博:
本次共计收集404篇博文笔记信息,总阅读量61.76w。数据采集于2024年11月25日 08:23:38,用时7分56.4秒。阅读量不小于6.00k的有 9 9 9篇。
- 让QQ群昵称色变的神奇代码
地址:https://blog.csdn.net/m0_57158496/article/details/122566500
浏览阅读:6.2w
点赞:25 收藏:89 评论:17
(本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)
- Python列表(list)反序(降序)的7种实现方式
地址:https://blog.csdn.net/m0_57158496/article/details/128271700
浏览阅读:1.3w
点赞:9 收藏:40 评论:8
(本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)
- pandas 数据类型之 DataFrame
地址:https://blog.csdn.net/m0_57158496/article/details/124525814
浏览阅读:1.0w
点赞:7 收藏:40
(本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)
- 个人信息提取(字符串)
地址:https://blog.csdn.net/m0_57158496/article/details/124244618
浏览阅读:1.0w
点赞:3 收藏:20
(本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)
- 罗马数字转换器|罗马数字生成器
地址:https://blog.csdn.net/m0_57158496/article/details/122592047
浏览阅读:8.2k
收藏:3
(本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)
- 统计字符串字符出现的次数
地址:https://blog.csdn.net/m0_57158496/article/details/130517025
浏览阅读:8.1k
点赞:5 收藏:24
(本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)
- Python字符串居中显示
地址:https://blog.csdn.net/m0_57158496/article/details/122163023
浏览阅读:8.0k
点赞:1 收藏:12 评论:1
- 回车符、换行符和回车换行符
地址:https://blog.csdn.net/m0_57158496/article/details/123109488
浏览阅读:6.7k
点赞:2 收藏:4
(本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)
- python清屏
地址:https://blog.csdn.net/m0_57158496/article/details/120762101
浏览阅读:6.1k
点赞:1 收藏:10
截屏图片

(此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)
精品文章:
- 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
- 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
- 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
- 靠谱程序员的好习惯
- 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归
CSDN实用技巧博文:
- 8个好用到爆的Python实用技巧
- python忽略警告
- Python代码编写规范
- Python的docstring规范(说明文档的规范写法)
相关文章:
python数组增加元素
append、appext、insert,在某位置插入insert最在行。 (笔记模板由python脚本于2024年12月04日 19:41:46创建,本篇笔记适合python基础编程的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖…...
【笔记】离散数学 1-3 章
1. 数理逻辑 1.1 命题逻辑的基本概念 1.1.1 命题的概念 命题(Proposition):是一个陈述句,它要么是真的(true),要么是假的(false),但不能同时为真和假。例如…...
AI技术在电商行业中的应用与发展
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
【Linux篇】权限管理 - 用户与组权限详解
一. 什么是权限? 首先权限是限制人的。人 真实的人 身份角色 权限 角色 事物属性 二. 认识人–用户 Linux下的用户分为超级用户和普通用户 root :超级管理员,几乎不受权限的约束普通用户 :受权限的约束超级用户的命令提示符是#,普通用…...
【AI系统】昇腾推理引擎 MindIE
昇腾推理引擎 MindIE 本文将介绍华为昇腾推理引擎 MindIE 的详细内容,包括其基本介绍、关键功能特性以及不同组件的详细描述。 本文内容将深入探讨 MindIE 的三个主要组件:MindIE-Service、MindIE-Torch 和 MindIE-RT,以及它们在服务化部署…...
美畅物联丨智能监控,高效运维:视频汇聚平台在储能领域的实践探索
在当今全球能源格局不断变化的大背景下,对清洁能源的需求正以惊人的速度增长。储能项目作为平衡能源供需、提升能源利用效率的关键环节,其规模和复杂度也在不断攀升。在储能项目的运营管理过程中,安全监控、设备运维以及数据管理等方面面临着…...
[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED]
使用requess库访问https网址时,返回 (Caused by SSLError(SSLError(1, [SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] unsafe legacy renegotiation disabled (_ssl.c:1147)))) 原因可能是服务器的认证方式版本太低然后requests抛弃了这种认证方式 参考ÿ…...
12.2深度学习_视觉处理CNN_池化层、卷积知识
3.池化层 3.1 概述 池化层 (Pooling) 降低维度, 缩减模型大小,提高计算速度. 即: 主要对卷积层学习到的特征图进行下采样(SubSampling)处理。 池化层主要有两种: 最大池化 max pooling 最大池化是从每个局部区域中选择最大值作为池化后的值…...
Kafka 常见面试题深度解析
一、基础概念 1. 请简要介绍 Kafka 的基本架构。 Kafka 主要由生产者(Producer)、消费者(Consumer)、代理(Broker)、主题(Topic)和分区(Partition)等组成。…...
LVS默认的工作模式支持哪些负载均衡算法?
LVS默认的工作模式支持哪些负载均衡算法? LVS(Linux Virtual Server)默认支持多种负载均衡算法,这些算法在不同的场景下具有各自的优势。以下是 LVS 默认支持的负载均衡算法及其特点: 1. 轮询调度(Round Robin Sched…...
洛谷P2670扫雷游戏(Java)
三.P2670 [NOIP2015 普及组] 扫雷游戏 题目背景 NOIP2015 普及组 T2 题目描述 扫雷游戏是一款十分经典的单机小游戏。在 n 行 m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩…...
【算法】【优选算法】位运算(下)
目录 一、:⾯试题 01.01.判定字符是否唯⼀1.1 位图1.2 hash思路1.3 暴力枚举 二、268.丢失的数字2.1 位运算,异或2.2 数学求和 三、371.两整数之和四、137.只出现⼀次的数字 II五、⾯试题 17.19.消失的两个数字 一、:⾯试题 01.01.判定字符是…...
前端性能优化篇:防抖和节流
参考:JS问题:项目中如何区分使用防抖或节流? 面试官:什么是防抖和节流?有什么区别?如何实现? 1 为什么要用到防抖和节流 当函数绑定一些持续触发的事件如:浏览器的resize、scroll…...
同为科技(TOWE)柔性定制化PDU插座
随着科技的进步,越来越多的精密电子设备,成为工作生活密不可分的工具。 电子电气设备的用电环境也变得更为复杂,所以安全稳定的供电是电子电气设备的生命线。 插座插排作为电子电气设备最后十米范围内供配电最终核心部分,便捷、安…...
【云原生系列】云计算中的负载均衡是什么,有什么用
云计算里有一个非常重要的概念叫“负载均衡”,如果你经常听到这个词但还不太明白具体是怎么回事,这篇文章可以给你一些思路。负载均衡简单来说就是“分担压力”,确保访问量被合理地分配到各个服务器上,让系统高效且稳定地运行。 …...
工业—使用Flink处理Kafka中的数据_ChangeRecord2
使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据,每隔 1 分钟输出最近 3 分钟的预警次数最多的 设备,将结果存入Redis 中, key 值为 “warning_last3min_everymin_out” , value 值为 “ 窗口结束时间,设备id” &am…...
【Java-数据结构篇】Java 中栈和队列:构建程序逻辑的关键数据结构基石
我的个人主页 我的专栏:Java-数据结构,希望能帮助到大家!!!点赞❤ 收藏❤ 一、引言 1. 栈与队列在编程中的角色定位 栈和队列作为两种基本的数据结构,在众多编程场景中都有着独特的地位。它们为数据的有序…...
工业—使用Flink处理Kafka中的数据_ProduceRecord1
1 、 使用 Flink 消费 Kafka 中 ProduceRecord 主题的数据,统计在已经检验的产品中,各设备每 5 分钟 生产产品总数,将结果存入Redis 中, key 值为 “totalproduce” , value 值为 “ 设备 id ,最近五分钟生…...
探索CSS版心布局:构建现代网页的黄金比例
探索CSS版心布局:构建现代网页的黄金比例 在网页设计中,版心(或称为内容区域)是页面的核心部分,通常用于放置主要内容。使用CSS3的新特性,可以创建更加灵活和响应式的版心布局。本文将详细介绍如何使用CSS…...
华为NPU服务器昇腾Ascend 910B2部署通义千问Qwen2.5——基于mindie镜像一路试错版(三)
文章目录 前言纯模型推理启动服务后面干什么?这可咋整啊?愁死了!总结前言 这是咱这个系列的第三个文章了。 毕竟,这是我好几天摸索出的经验,能帮助各位在几个小时内领会,我觉得也算是我的功劳一件了。 所以,一是希望大家耐心看下去,耐心操作下去;而是恳请各位多多关…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...
工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...
