本菜鸡在刷leetcode时的一些备忘录 ヾ(◍°∇°◍)ノ゙
关于 split() 的用法
s = "a good example"
res = s.split()
print(res) # ['a', 'good', 'example']
res = s.split(' ')
print(res) # ['a', 'good', '', '', 'example']
遍历数组的时候,跳过当前元素
ss = "abcd"
for i in range(len(ss)):
print(i)
print(ss[:i]+ss[i+1:])
"""
0
bcd # 第0个元素不取
1
acd # 第1个元素不取
2
abd # 第2个元素不取
3
abc # 第3个元素不取
"""
数组倒着输出 list.pop()
alist = [1,2,3,4,5]
for _ in range(len(alist)):
print(alist.pop())
"""
5
4
3
2
1
"""
list声明空数组、二维数组
# 浅拷贝
list1 = [[]]*3
print(list1) # [[], [], []]
list1[0].append(3) # [[3], [3], [3]]
# list1是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用,修改任何
# 一个元素都会改变整个列表
print(list1) # [[3], [3], [3]]
list2 = []*3
print(list2) # []
# 深拷贝
lists = [[] for i in range(3)]
lists[0].append(3)
lists[0].append(4)
lists[0].append(5)
print(lists) # [[3, 4, 5], [], []]
# 构建4行3列二维数组
myList = [([0] * 3) for _ in range(4)]
print(myList) # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
myList[0][1]=5
print(myList) # [[0, 5, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
list初始化递增二维数组
x,y = 2,4
A = np.ones((3, 5))
print("A: ", A) # 3行5列
# [[1. 1. 1. 1. 1.]
# [1. 1. 1. 1. 1.]
# [1. 1. 1. 1. 1.]]
for i in range(0, x+1):
A[i][0] = i
for j in range(1,y+1):
A[i][j] = A[i][j-1]+1
print(A)
# [[0. 1. 2. 3. 4.]
# [1. 2. 3. 4. 5.]
# [2. 3. 4. 5. 6.]]
list一个未完成的疑问
# 问题在哪呢???
a = [[1,2],[3,4],[5,6]]
for i in a:
i.append(10)
print(i)
"""
[1, 2, 10]
[3, 4, 10]
[5, 6, 10]
"""
c = [i.append(10) for i in a]
print(c) # [None, None, None]
list sorted() 与sort() 排序
list.sort() 排序后改变了原本的list
sorted(list) 排序后不会改变原list,默认升序
"""
list.sort() 排序后改变了原本的list
sorted(list) 排序后不会改变原list,默认升序
"""
nums = [10,3,8,9,4]
nums.sort() # 改变了原本的nums列表
print("sort: ", nums) # [3, 4, 8, 9, 10]
a = [5, 2, 3, 1, 4]
print("sorted: ", sorted(a)) # 升序 # [1, 2, 3, 4, 5]
print(a) # [5, 2, 3, 1, 4] sorted不改变原list
print(sorted(a,reverse=True)) # 实现降序 # [5, 4, 3, 2, 1]
字符串用完sorted(0)之后会转为list
# 字符串用完sorted(0)之后会转为list
c = "acbed"
print(sorted(c)) # ['a', 'b', 'c', 'd', 'e']
np.arange() 与 range() 生成list的不同
print("--------求幂----------")
print(np.arange(3,6)) # [3 4 5]
scales = 2**np.arange(3,6)
print(scales) # [8 16 32]
for i in range(4):
print(i) # 0,1,2,3
bb = [i for i in range(4)]
print(bb) # [0, 1, 2, 3]
for i in range(0):
print(i) # 啥也不输出
list转为np.mat()后下标取值
python中numpy模块下函数array()和mat()的区别
A = [[1,2,3,4,5,6],
[7,8,9,10,11,12],
[13,14,15,16,17,18]]
A = np.mat(A)
print(A[0,:]) # [[1 2 3 4 5 6]]
print(A[0,:1]) #[[1]]
print(A[0,:4]) # [[1 2 3 4]]
print(A[0,:5]) # [[1 2 3 4 5]]
list取不存在的下标也无所谓
# 取不存在的下标也无所谓
sss = "abc"
print(sss[2:3]) #c
print(sss[2:4]) #c
print(sss[2:5]) #c
list切片
a = "loveleetcode"
print(a[:-1]) # loveleetcod
print(a[-5::-1]) # octeelevol
# 翻转列表
listNode = [1,2,3]
print(listNode[::-1]) # [3, 2, 1]
is与==
a = 1
b = 1
print(a is b) # True
print(a == b) # True
collections用法
import collections
n1 = '2500'
n2 = '0052'
print(collections.Counter(n1)) # Counter({'0': 2, '2': 1, '5': 1})
print(collections.Counter(n2)) # Counter({'0': 2, '5': 1, '2': 1})
print(collections.Counter(n1)==collections.Counter(n2)) # True
将字典同一key的value合并
print("input: ", b) # [{'892': 7}, {'892': 9}, {'892': 6}, {'212': 10}]
print('-'*30)
new_dict = {}
for idx, val in enumerate(b):
print(idx, val, type(val))
old_key = [k for k in val.keys()][0]
if old_key in new_dict.keys():
tmp_list = new_dict[old_key]
tmp_list.append(val[old_key])
new_dict[old_key] = tmp_list
else:
new_dict[old_key] = [val[old_key]]
print("output: ", new_dict)
# {'892': [7, 9, 6], '212': [10]}
# 按照value的个数降序
sorted_new_list = sorted(new_dict.items(), key=lambda d: len(d[1]), reverse=True)
print(sorted_new_list) # [('892', [7, 9, 6]), ('212', [10])]
关于python:如何将带有位值逗号的数字字符串转换为整数?
https://www.codenong.com/2308443/
>>> s="1,374"
>>> import locale
>>> locale.setlocale(locale.LC_NUMERIC, '')
'en_US.UTF-8'
>>> locale.atoi(s)
1374
方法2(这种方式更简单一点)
int("1,374".replace(",",""))