美文网首页
刷题tips

刷题tips

作者: 裁尘的人儿 | 来源:发表于2020-09-04 18:49 被阅读0次

!!!注意:前万不能把变量命名为list,否则系统里的list()函数就失效了!!!这时候要清楚该自定义的“list”变量del list

前缀:
二进制 0b
十进制 0o
十六进制 0x
将整数转化成二进制字符串

1、你可以自己写函数采用 %2 的方式来算。

binary = lambda n: '' if n==0 else binary(n/2) + str(n%2)
binary(5)
#'101'

2. 采用 python 自带了方法 bin 函数,比如 bin(12345) 回返回字符串 '0b11000000111001', 这个时候在把0b去掉即可:

bin(12345).replace('0b','')
#'11000000111001'

2.1 八进制
a = 10  #声明数字,默认十进制
b = oct(a).replace('0o','')
print(b , type(b))

2.2 十六进制
b = hex(a).replace('0x','')

2.3 将二进制数转成2,8,16进制数
a = '011'
print(int(a,base=2))
print(int(a,base=8))
print(int(a,base=16))




3、也可以采用字符串的 format 方法来获取二进制:
 "{0:b}".format(12345)
#'11000000111001'

将字符串转数字

[int(i) for i in list]#转整型
[float(i) for i in list]#转浮点型
[long(i) for i in list]#转长整型

int(i, base) 
long(i,base)

取list里规律取(按表达式)某些值

首先了解下一般取列表怎么按索引取值,也就是列表的切片:

list[i:j] 就是从列表的索引 i 到索引j 个的值;列表的索引第一位是从0开始的
list[i:j:3] 取i ~ j 但步长为3;也就是取每次索引位置开始+3的值

#取奇数位
list[::2 ]  这里的 i j 我们省略的话就是默认数组最开头到结尾
#取偶数位
list[1::2] 从第二个数开始数,步长为2

将键盘输入读进:

注意:line.split是把你输入的一行默认按空格分割成一个个字符串,形成一个list



键盘输入:[1,2,3],[4,5,6]
从标准输入读入一行文本,默认的标准输入是键盘:
line=input()
x=line.split(']')
#['[1,2,3', ',[4,5,6', '']
a=[int(i) for i in x[0].split('[')[1].split(',')]
# [1,2,3]
b=[int(i) for i in x[1].split('[')[1].split(',')]
# [4,5,6]




#键盘输入数组:2*2*3
第一行数组维度(所以第一行单独处理);
第二行是数组第一行,
第三行是数组第二行。
2 2
1 0 0 0.5 0.5 0
0.0.2 0.8 0 1 0

###方法一:利用for line in sys.stdin:a=line.split()循环,键盘一次性输入多行,并且切换到下一行仅需要像往常一样enter即可。
#1. 首先输入你要输入的矩阵的行数和列数
import sys
import numpy as np
line=input()
dim=line.split()
dim=[int(i) for i in dim]
data=np.zeros([dim[0],dim[1],3])

#2. 然后一行一行键盘输入数据
m=0
for line in sys.stdin:(注意,对于for语句在命令行里的输入,如果要结束输入for语句的代码,需要两次Enter)
        a=line.split()
        x=[float(i) for i in a]
        PD=x[0::3]
        PR=x[1::3]
        PS=x[2::3]
        for i in range(len(PD)):
                data[m,i]=[PD[i],PR[i],PS[i]]
        m=m+1
print(data)
#ctrl + d 结束输入

###方法二:利用对input().split(' ')进行for循环
#键盘输入注意:键盘一次性输入多行,并且切换到下一行仅需要像往常一样enter即可。
###从键盘输入一个二维数组
#1. 首先输入你要输入数组的
m = int(input())行数
#加入我们这里输入m=3

#2. 建立一个空的二维数组
grid = [[] for i in range(m)]
#[[], [], []]

for i in range(m):
     line = input().split(' ')
     for j in range(len(line)):  
          grid[i].append(int(line[j]))

将字符list转成数字list

方式一:
numbers = [ int(x) for x in numbers ]

方式二:  python3.x,map返回的是map对象,当然也可以转换为List:
numbers = list(map(int, numbers))

map函数

对list里每个元素都进行某个函数的处理
list(map(func, list))#注意,map函数返回一个map对象,需要转为list

def func(x):
  return x*x

list(map(func, [1,2,3]))
#[1,4,9]

函数list

a=[1,3,7]
min(a)
max(a)
sum(a)
正序排序:sorted(a)等同于sorted(a,reverse=False)
倒序排序:sorted(a,reverse=True)
均值:average_a = np.mean(a)
中值:median_a = np.median(a)

#找出a最大值的位置
a.index(max(a))

压栈和弹栈

a=[5,7,32,4]
a.pop(index)#注意:pop函数的参数是index,是弹出指定某个位置的值
a.pop()等同于a.pop(-1),即默认弹出列表里最后一个值

a.append(value)#注意:append函数的参数是value,是在尾部压入某个值

随机抽样

  1. pandas对数据框实现随机抽样:随机抽某些行/列
df.sample(n=None, #指抽取的样本量
                frac=None,#指定抽取的样本比例
                replace=False, #是否有放回抽样,默认无放回(对于不平衡数据抽样时,replace=False)
                weights=None, #指定样本抽中的概率,(默认等概率抽样)
                random_state=None,#指定随机抽样的随机种子,可以使得每次抽样的种子一样,每次抽样的结果一样
                axis=None#是选择抽取数据的行还是列。axis=0时是抽取行,axis=1时是抽取列)
  1. 在List中随机抽取n个元素:使用random包
import random
#1. 从seq序列中(可以是列表,元组,字符串)随机取一个元素返回
random.choice(seq):
#2. 从population中进行K次随机选取,每次选取一个元素(注意会出现同一个元素多次被选中的情况)
random.choices(population, 
            weights=None, *,
            cum_weights=None, 
            k=1)
#weights是相对权重值,population中有几个元素就要有相对应的weights值,
#cum_weights是累加权重值,例如,相对权重〔10, 5, 30,5〕相当于累积权重〔10, 15, 45,50〕。在内部,在进行选择之前,相对权重被转换为累积权重,因此提供累积权重节省了工作。
#返回一个列表。

#3. sample函数
random.sample(population, k)
#从population中取样,一次取k个,返回一个k长的列表。(元素之间不会重复)
 

#4. 或者直接 random.shuffle
random.shuffle(seq)
seq[0:n]
#直接打乱原序列,然后取前n个
#注意:random.shuffle(a)函数无返回值,是在list本身上对其打乱,random.shuffle(a)执行后,list a本身就被打乱了

将字符串分成成一个个字符

list('11000000')
['1', '1', '0', '0', '0', '0', '0', '0']

list便捷函数

0. list的copy(注意:是在python3里有用)
li1=[1,2,3,4,5,6]
li2=li1.copy()

1. list去重
(1)np.unique(['1', '1', '0', '0', '0', '0', '0', '0'])
(2)list(set(['1', '1', '0', '0', '0', '0', '0', '0']))


2. list排序:
(1)np.sort(['1', '1', '0', '0', '0', '0', '0', '0'])
(2)list.sort(cmp=None, key=None, reverse=False)
* 注意这里是对list本身进行排序,无返回值!!!!!!
a=['1', '1', '2', '5', '0', '0', '3', '0']
a.sort(reverse = True)#无返回值!!!!!!!
a
#['5', '3', '2', '1', '1', '0', '0', '0']

3. list运算

数学运算:

sum(list)
np.mean(a)
np.median(a)

多个列表合并

l1 = [1, 2, 3]
l2 = [4, 5, 6]
l3 = l1 + l2
print(l3)# [1, 2, 3, 4, 5, 6]

extend和append的区别

l1 = [1, 2, 3]
l2 = [4, 5, 6]
l3 = l1 + l2
print(l3)# [1, 2, 3, 4, 5, 6]


* append(listi)  作为参数的list将以list的形式添加到原来的列表中,该方法没有返回值
* extend(listi)  作为参数的list将全部以子元素的方式添加到原来的列表中,该方法没有返回值

l1.append(l2)
print(l1) # [1, 2, 3, [4, 5, 6]]
l1.extend(l2)
print(l1) # [1, 2, 3, [4, 5, 6], 4, 5, 6]

字典dict

dic={'C':1,"D":2,'E':3}

dic.items()
#dict_items([('C', 1), ('D', 2), ('E', 3)])
list(dic.items())
#[('C', 1), ('D', 2), ('E', 3)]

dic.keys()
#dict_keys(['C', 'D', 'E'])
list(dic.keys())
#['C', 'D', 'E']

dic.values()
#dict_values([1, 2, 3])
list(dic.values())
#[1, 2, 3]



{key:value for value,key in dic.items()} #key在后,value在前
#{1: 'C', 2: 'D', 3: 'E'}

数学运算:

np.log(2)


统计数量collections.Counter

from collections import Counter

list = [59, 138, 13, 1367, 158, 35, 572, 43, 10, 34, 572, 572, 44, 12, 1345, 7, 21, 59, 10]
counter = Counter(list)
counter
#Counter({59: 2,
#         138: 1,
#         13: 1,
#         1367: 1,
#         158: 1,
#         35: 1,
#         572: 3,
#         43: 1,
#         10: 2,
#         34: 1,
#         44: 1,
#         12: 1,
#         1345: 1,
#         7: 1,
#         21: 1})

counter[59]#2
counter[10]#2

###统计list里每个元素的数量:
stats={key:counter[key] for key in list(set(li))}
#stats
#{1345: 1,
# 34: 1,
# 35: 1,
# 7: 1,
# 138: 1,
# 43: 1,
# 10: 2,
# 13: 1,
# 44: 1,
# 12: 1,
# 21: 1,
# 1367: 1,
# 59: 2,
# 572: 3,
# 158: 1}
stats[59]  #2

相关文章

  • 刷题tips

    !!!注意:前万不能把变量命名为list,否则系统里的list()函数就失效了!!!这时候要清楚该自定义的“lis...

  • 技术博客&&网站

    刷题的网站LeetCode Online Judge RuntimeChun Tips Runtime细化一下Ru...

  • 刷题刷题

    时间紧迫,任务繁重,又有疫情影响,搞的人心惶惶,一时间复习得不安宁,又舍不得摆烂。 在焦灼、惶恐的情绪中,紧张急迫...

  • LeetCode 分类刷题 —— Bit Manipulatio

    Bit Manipulation 的 Tips: 异或的特性。第 136 题,第 268 题,第 389 题,第 ...

  • 2022-09-16

    刷题,刷题还是刷题

  • 2018-07-16

    刷题,祸害的何止是教育? 报班,刷题;买练习册,刷题;家教,刷题;跟不上,刷题;学得好,刷题;为了抢跑,刷题;为了...

  • LeetCode 分类刷题 —— Backtracking

    Backtracking 的 Tips: 排列问题 Permutations。第 46 题,第 47 题。第 60...

  • 刷题啊刷题

    因为月底又要考试,所以最近几天一直在刷题。按说是看了书再看视频再刷题效果比较好才是。可是来不及了啊。 上次考试,就...

  • 刷题啊刷题

    刷题啊刷题 因为11月中旬要举行期中考试,所以最近几天,学校精心组织,一直在刷题。按说是看了书再看PPT课件或教师...

  • 2020-02-01关于刷题的几个建议

    算法刷题 针对性刷题,刻意练习。刻意刷题!不是麻木刷题!刷题前一定要先看书,清楚明白为什么要刷这些题,这些题刷完能...

网友评论

      本文标题:刷题tips

      本文链接:https://www.haomeiwen.com/subject/hezqsktx.html