python3学习笔记--集合、元组、字典、列表对比
数据结构
Python支持以下数据结构:列表,字典,元组,集合。
何时使用字典:
当您需要键:值对之间的逻辑关联时。
当您需要基于自定义密钥快速查找数据时。
当你的数据不断修改时。请记住,字典是可变的。
何时使用其他类型:
如果您有一些不需要随机访问的数据集合,请使用列表。当你需要一个简单的,可迭代的频繁修改的集合可以使用列表。
如果你需要元素的唯一性,使用集合。
当数据无法更改时使用元组。
很多时候,元组与字典结合使用,例如元组可能代表一个关键字,因为它是不可变的。
1、列表
使用方括号创建
words = ["Hello", "world", "!"]
使用空的方括号创建空列表
可以通过索引来访问
大多数情况下,列表中的最后一项不会带逗号。然而,在最后一项放置一个逗号是完全有效的,在某些情况下是鼓励的。
列表的索引是从0开始的,而不是从1开始的
2、集合
使用花括号或 set 函数创建
num_set = {1, 2, 3, 4, 5}
wor ...
python3学习笔记--列表切片
列表切片(List slices)提供了从列表中检索值的更高级的方法。
列表名[num1 : num2 : num3]
从索引num1到num2(不包括num2)间隔为num3的元素
num1或num2为负值代表从末尾开始算起的
num3为负值代表切片进行逆序截取
以下为具体说明
基本用法
用两个以冒号分隔的整数索引列表。
列表切片返回一个包含索引之间旧列表中所有值的新列表。
例如:
squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[2:6])
print(squares[3:8])
print(squares[0:1])
结果:
[4, 9, 16, 25]
[9, 16, 25, 36, 49]
[0]
和Range参数一样,在一个 slice 中提供的第一个索引被包含在结果中,但是第二个索引没有。
省略一个数字
如果省略了切片中的第一个数字,则将从列表第一个元素开始。
如果第二个数字被省略,则认为是到列表结束。
例如:
squares = [0, 1, 4, 9, 16, 25, ...
python3学习笔记--常用的函数
本篇博客内容为学习整理笔记,学习地址为:
https://www.w3cschool.cn/minicourse/play/python3course?cp=427&gid=0
字符串函数
1、join
以另一个字符串作为分隔符连接字符串列表。
例如:
print(", ".join(["spam", "eggs", "ham"]))
# 打印 "spam, eggs, ham"
2、replace
用另一个替换字符串中的一个子字符串。
例如:
print("Hello ME".replace("ME", "world"))
# 打印 "Hello world"
3、startswith
确定是否在字符串的开始处有一个子字符串。
例如:
print("This is a sentence.".startswith("This"))
# 打印 "Tru ...
力扣540:有序数组中的单一元素
2022年02月14日 力扣每日一题
题目
给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。
示例 1:
输入: nums = [1,1,2,3,3,4,4,8,8]
输出: 2
示例 2:
输入: nums = [3,3,7,7,10,11,11]
输出: 10
提示:
1
力扣1189:“气球” 的最大数量
2022年02月13日 力扣每日一题
题目
给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。
字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。
示例 1:
输入:text = "nlaebolko"
输出:1
示例 2:
输入:text = "loonbalxballpoon"
输出:2
示例 3:
输入:text = "leetcode"
输出:0
提示:
1 <= text.length <= 10^4
text 全部由小写英文字母组成
Related Topics哈希表字符串计数
个人解法
一个单词”balloon”分别需要一个’b’、‘a’、‘n’,以及二个’l’、‘o’
首先我们统计给的单词中每个字母的个数
然后统计’b’、‘a’、‘n’数量以及’l’、'o’ ...
力扣1020:飞地的数量
2022年02月12日 力扣每日一题
题目
给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。
一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。
返回网格中 无法 在任意次数的移动中离开网格边界的陆地单元格的数量。
示例 1:
输入:grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]
输出:3
解释:有三个 1 被 0 包围。一个 1 没有被包围,因为它在边界上。
示例 2:
输入:grid = [[0,1,1,0],[0,0,1,0],[0,0,1,0],[0,0,0,0]]
输出:0
解释:所有 1 都在边界上或可以到达边界。
提示:
m == grid.length
n == grid[i].length
1 <= m, n <= 500
grid[i][j] 的值为 0 或 1
Related Topics深度优先搜索广度优先搜索并查集数组矩阵
个人解法
解题 ...
代码提交到多个git仓库
现在我们都习惯于把自己的代码放到远程仓库中,毫无疑问GitHub是首选,但由于国内的网络等各种原因,会导致我们连接不上,这时候我们会考虑放到自建的代码管理仓库或者是gitee上面。
我们还不想放弃GitHub,那么我们就要考虑将代码提交到多个仓库中。
比如,我分别在GitHub和gitee上都有格子的仓库:
https://github.com/huangge1199/my-blog.git
https://gitee.com/huangge1199_admin/my-blog.git
那么,我可以通过以下命令来进行添加仓库:
先添加第一个GitHub的仓库地址:
git remote add origin https://github.com/huangge1199/my-blog.git
再添加gitee的仓库地址
git remote set-url --add origin https://gitee.com/huangge1199_admin/my-blog.git
这样的话我们push时,就 ...
力扣1984:学生分数的最小差值
2022年02月11日 力扣每日一题
题目
给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。
从数组中选出任意 k 名学生的分数,使这 k 个分数间 最高分 和 最低分 的 差值 达到 最小化 。
返回可能的 最小差值 。
示例 1:
输入:nums = [90], k = 1
输出:0
解释:选出 1 名学生的分数,仅有 1 种方法:
- [90] 最高分和最低分之间的差值是 90 - 90 = 0
可能的最小差值是 0
示例 2:
输入:nums = [9,4,1,7], k = 2
输出:2
解释:选出 2 名学生的分数,有 6 种方法:
- [9,4,1,7] 最高分和最低分之间的差值是 9 - 4 = 5
- [9,4,1,7] 最高分和最低分之间的差值是 9 - 1 = 8
- [9,4,1,7] 最高分和最低分之间的差值是 9 - 7 = 2
- [9,4,1,7] 最高分和最低分之间的差值是 4 - 1 = 3
- [9,4,1,7] 最高分和最低分之间的差值是 7 - 4 = 3 ...
个人网站加入到搜索引擎中
一般来说,搜索引擎中是不会收入你个人网站的,你可以试试用谷歌或者百度等其他搜索引擎看看,能不能收到你个人网站的相关页面?
如果搜索不到,你可以申请加入搜索引擎,这个是免费的,下面提供一些搜索引擎的提交地址:
谷歌博客搜索收录入口:
http://www.google.com/addurl/
百度收录入口:
http://www.baidu.com/search/url_submit.html
必应Bing收录入口:
https://www.bing.com/toolbox/submit-site-url
360搜索引擎登录入口:
http://info.so.360.cn/site_submit.html
搜狗提交入口:
http://www.sogou.com/feedback/urlfeedback.php
目前,我所知道的就只有,如果你有其他搜索引擎的提交地址,可以在评论区中留下搜索引擎名称和地址,万分感谢!
力扣1219:黄金矿工
2022年02月05日 力扣每日一题
题目
你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。
为了使收益最大化,矿工需要按以下规则来开采黄金:
每当矿工进入一个单元,就会收集该单元格中的所有黄金。
矿工每次可以从当前位置向上下左右四个方向走。
每个单元格只能被开采(进入)一次。
不得开采(进入)黄金数目为 0 的单元格。
矿工可以从网格中 任意一个 有黄金的单元格出发或者是停止。
示例 1:
输入:grid = [[0,6,0],[5,8,7],[0,9,0]]
输出:24
解释:
[[0,6,0],
[5,8,7],
[0,9,0]]
一种收集最多黄金的路线是:9 -> 8 -> 7。
示例 2:
输入:grid = [[1,0,7],[2,0,6],[3,4,5],[0,3,0],[9,0,20]]
输出:28
解释:
[[1,0,7],
[2,0,6],
[3,4,5],
...
力扣1725:可以形成最大正方形的矩形数目
2022年02月04日 力扣每日一题
题目
给你一个数组 rectangles ,其中 rectangles[i] = [li, wi] 表示第 i 个矩形的长度为 li 、宽度为 wi 。
如果存在 k 同时满足 k
seata1.4.1服务端部署及应用
seata1.4.1服务端部署及应用
springcloud-nacos-seata
分布式事务组件seata的使用demo,AT模式,集成nacos、springboot、springcloud、mybatis-plus、feign,数据库采用mysql
demo中使用的相关版本号,具体请看代码。如果搭建个人demo不成功,验证是否是由版本导致,由于目前这几个项目更新比较频繁,版本稍有变化便会出现许多奇怪问题
seata 1.4.1
spring-cloud-alibaba-seata 2.2.0.RELEASE
spring-cloud-starter-alibaba-nacos-discovery 2.1.1.RELEASE
springboot 2.1.10.RELEASE
springcloud Greenwich.SR4
1. 服务端配置
seata-server为release版本1.4.1,采用docker部署方式
https://github.com/seata/seata/releases/tag/v1.4.1)
1.1 docker拉取镜像
docker ...
力扣1688:比赛中的配对次数
2022年01月25日 力扣每日一题
题目
给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:
如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。
如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1 支队伍进入下一轮。
返回在比赛中进行的配对次数,直到决出获胜队伍为止。
示例 1:
输入:n = 7
输出:6
解释:比赛详情:
- 第 1 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。
- 第 2 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
- 第 3 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
总配对次数 = 3 + 2 + 1 = 6
示例 2:
输入:n = 14
输出:13
解释:比赛详情:
- 第 1 轮:队伍数 = 14 ,配对次数 = 7 ,7 支队伍晋级。
- 第 2 轮:队伍数 = 7 ,配对次数 = 3 ,4 ...
力扣2045:到达目的地的第二短时间
2022年01月24日 力扣每日一题
题目
城市用一个 双向连通 图表示,图中有 n 个节点,从 1 到 n 编号(包含 1 和 n)。图中的边用一个二维整数数组 edges 表示,其中每个 edges[i] = [ui, vi] 表示一条节点 ui 和节点 vi 之间的双向连通边。每组节点对由 最多一条 边连通,顶点不存在连接到自身的边。穿过任意一条边的时间是 time 分钟。
每个节点都有一个交通信号灯,每 change 分钟改变一次,从绿色变成红色,再由红色变成绿色,循环往复。所有信号灯都 同时 改变。你可以在 任何时候 进入某个节点,但是 只能 在节点 信号灯是绿色时 才能离开。如果信号灯是 绿色 ,你 不能 在节点等待,必须离开。
第二小的值 是 严格大于 最小值的所有值中最小的值。
例如,[2, 3, 4] 中第二小的值是 3 ,而 [2, 2, 4] 中第二小的值是 4 。
给你 n、edges、time 和 change ,返回从节点 1 到节点 n 需要的 第二短时间 。
注意:
...
力扣1345:跳跃游戏 IV
2022年01月21日 力扣每日一题
题目
给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0)。
每一步,你可以从下标 i 跳到下标:
i + 1 满足:i + 1 < arr.length
i - 1 满足:i - 1 >= 0
j 满足:arr[i] == arr[j] 且 i != j
请你返回到达数组最后一个元素的下标处所需的 最少操作次数 。
注意:任何时候你都不能跳到数组外面。
示例 1:
输入:arr = [100,-23,-23,404,100,23,23,23,3,404]
输出:3
解释:那你需要跳跃 3 次,下标依次为 0 --> 4 --> 3 --> 9 。下标 9 为数组的最后一个元素的下标。
示例 2:
输入:arr = [7]
输出:0
解释:一开始就在最后一个元素处,所以你不需要跳跃。
示例 3:
输入:arr = [7,6,9,6,9,6,9,7]
输出:1
解释: ...







