# https://www.bilibili.com/video/BV1ak4y127yW?p=4&spm_id_from=pageDriver
## 列表的区别
```
# 有什么区别
a = [1, 2, 3]
b = [(1), (2), (3)]
c = [(1,), (2,), (3,)]
print(a)
print(b)
print(c)
```
输出:
```
[1, 2, 3]
[1, 2, 3]
[(1,), (2,), (3,)]
```
都是列表,(1+2) * 3,python的()默认优先,要表示元组tuple要在元素后加逗号
## 如何用一行代码生成[1,4,9,16,25,36,49,64,81,100]
```
lst = [i**2 for i in range(1, 11)]
print(lst)
```
## 有两个字符串列表a和b,每个字符串时有逗号分隔的一些字符
```
"""
a = [
'a, 1',
'b, 3, 22',
'c, 3, 4'
]
b = [
'a, 2',
'b, 1',
'd, 2'
]
按每个字符串的第一个值,合并a和b到c
c = [
'a, 1, 2',
'b, 3, 22, 1',
'c, 3, 4',
'd, 2'
]
"""
a = [
'a, 1',
'b, 3, 22',
'c, 3, 4'
]
b = [
'a, 2',
'b, 1',
'd, 2'
]
for b_i in range(len(b)):
for a_i in range(len(a)):
if a[a_i][0] == b[b_i][0]:
a[a_i] += b[b_i][1:]
break
else:
a.append(b[b_i])
print(a)
```
## 打印列表
```
"""
有一个多层嵌套的列表A = [1, 2, [3, 4, ["434", ...]]]
请写一段代码遍历A中的每一个元素并打印出来
"""
A = [1, 2, [3, 4, ["434", ...]]]
for item in A:
if type(item) == list:
A.extend(item)
else:
print(item)
```
## 将列表内的元素,根据位数合并成字典
```
"""
将列表内的元素,根据位数合并成字典
例:
lst = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,4294967296]
# 输出:
{
1:[1,2,4,8],
2:[16,32,64],
3:[128,256,512],
4:[1024,2048,4096,8192],
5:[16384,32768,65536],
6:[4294967296]
}
"""
lst = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,4294967296]
dic = {}
for item in lst:
it = str(item)
if len(it) < 6:
dic.setdefault(len(it), []).append(item)
else:
dic.setdefault(6, []).append(item)
print(dic)
```
## 把二维数组转换成一维数组
```
"""
请尽量用简洁的方法把二维数组转换成一维数组
例如:
转换前
lst = [[1,2,3], [4,5,6], [7,8,9]]
转换后
lst = [1,2,3,4,5,6,7,8,9]
"""
lst = [[1,2,3], [4,5,6], [7,8,9]]
lst2 = sum(lst, [])
print(lst2)
```
## 按规则排序
```
"""
将列表按下列规则排序,补全代码
1. 正数在前,负数在后
2. 正数从小到大 1 2 3 4 5 6 7 8 9
3. 负数从大到小 -1 -2 -3 -4 -5 -6 -7 -8 -9
例如:
排序前:[7, -8, 5, 4, 0, -2, -5]
排序后:[0, 4, 5, 7, -2, -5, -8]
请补全代码:
sorted(lst, key=lambda x:_____)
"""
lst = [7, -8, 5, 4, 0, -2, -5]
res = sorted(lst, key=lambda x: (x < 0, abs(x)))
print(res)
```
## 深浅拷贝
```
"""
a = [1, 2, 3, [4, 5], 6]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
b.append(10)
c[3].append(11)
d[3].append(12)
请问a, b, c, d的值为:????
"""
import copy
# a = b = [1, 2, 3, [4, 5, 11], 6, 10]
# c = [1, 2, 3, [4, 5, 11], 6]
# d = [1, 2, 3, [4, 5, 12], 6]
a = [1, 2, 3, [4, 5], 6]
b = a # 没有拷贝
c = copy.copy(a) # 浅拷贝,[4, 5]共享
d = copy.deepcopy(a) # # 深拷贝,完全是另一份数据
b.append(10)
c[3].append(11)
d[3].append(12)
```
## 交集反交集
```
"""
给定两个list, A, B 请用python找出A, B中相同的元素,A, B中不同的元素
"""
A = [1,2,3]
B = [2,3,4]
a = set(A)
b = set(B)
print(a & b) # 交集
print(a ^ b) # 烦交集
print(a | b) # 合集
print(a - b) # 差集
```
输出:
```
{2, 3}
{1, 4}
{1, 2, 3, 4}
{1}
```
- 空白目录
- 算法
- 排序
- 冒泡排序
- 选择排序
- 插入排序
- 归并排序
- 快速排序
- 计数排序
- 桶排序
- 基数排序
- 希尔排序
- 堆排序
- 二分查找
- 最小堆
- 最小索引堆
- 平衡二叉树(AVL tree)
- bitmap位图
- 布隆过滤器
- hashmap
- topK
- 跳表
- LRU Cache
- kmp
- 最小堆和堆排序
- 最短路径
- C++
- 运行时类型判断RTTI
- C++反射
- 手动实现智能指针
- 序列化实现
- rpc实现
- std::forward
- 函数指针的妙用
- C/C++
- std::function
- 同步队列
- 线程池实现
- std::promise
- 深入理解虚函数
- extern "C" 关键字讲解
- 大端小端的区别
- 简历
- 简历1
- redis
- 数据结构和对象
- sds
- list
- zskiplist
- 腾讯云redis面试题总结
- redis集群部署
- LeetCode
- 目标
- go基础
- 算法快速入门
- 数据结构篇
- 二叉树
- 链表
- 栈和队列
- 二进制
- 基础算法篇
- 二分搜索
- 排序算法
- 动态规划
- 算法思维
- 递归思维
- 滑动窗口思想
- 二叉搜索树
- 回溯法
- 其他
- 剑指offer
- 笔记
- git代理加速
- Linux
- vim大法
- vscode远程不能跳转
- cmake
- 设计模式
- 单例模式
- 简单工厂模式
- 外观模式
- 适配器模式
- 工厂方法模式
- 抽象工厂模式
- 生成器模式
- 原型模式
- 中介者模式
- 观察者模式
- 访问者模式
- 命令模式
- 网络编程
- epoll reactor模式
- linux timerfd系列函数总结
- IO
- mapreduce
- 反射器
- leo通信库
- Mutex
- Condition
- thread
- raft
- 协程
- hook
- 定时器
- 别人的面试经验
- 面试题
- vector崩溃问题
- JAVA
- Linux java环境配置
- ucore
- lab1
- FreeNOS
- leveldb
- 刷题笔记
- 回文串
- 前缀树
- 字符串查找
- 查找两个字符串a,b中的最长公共子串
- 动态规划
- golang
- 顺序循环打印实现
- 数据结构
- rpc运用
- python
- 单例
- 深拷贝浅拷贝
- 链表
- python基础题
- mysql
- 事务
- Linux
- 共享内存
- 刷题记录
- 贪心算法
- 动态规划
- 面试
- 腾讯C++面试
- 微众面试JD
- 迅雷网络面试
- 学习网址
- rabbitMq
