【Python】菜鸡小技巧总结

本菜鸡在刷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(",",""))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值