2021-03-05二级学习
2021-03-05 本文已影响0人
Cipolee
-
切片的进一步了解
step表示步长,也表示方向
li[k::-1]表示从倒数第k个倒着切片到第1个
li[:k:-1]表示从倒数第一个切片到第k个
前k逆转拼接k后逆转,再总的逆转
def revolution_reverse(li,k):
return li[k:]+li[:k]
简单实现方式,可以找到结果的规律,每步细节可以不实现
列表删除特定元素可以使用列表推导式+if语句
- split()返回列表,且split字符的两端会产生“”,“”
- 关于python字符串re的学习,正则表达式
- compile产生正则表达式对象
match函数,匹配函数
re.match(pattern,string,flags=0)
正则表达式关键点是先通过re.compile(正则表达式)生成一个正则对象
正则表达式可以是raw string原始字符串所以可以加上r
#简单的正则表达式实例
import re
t=re.compile('\d+')
print(t.findall('123sdfg123 3'))
结果
pta二级题
得到“答案正确”的条件是:
1.字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
2.任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
3.如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
【推导类的题】以结果规律为导向,第三步可以列出推导式
即使用P和T分割后前面和后面和中间的关系是
list_str[0]*len(list_str[1])==list_str[2]
import re
s=int(input())
for i in range(s):
str=input()
#从头匹配
regu=re.compile('A*PA+TA*')
#'*'表示匹配前一个字符重复 0 次到无限次,'+'表示匹配前一个字符重复 1次到无限次
if regu.match(str):
a=re.split('[P|T]',str)
if a[0]*len(a[1])==a[2]:
print("YES")
else:
print("NO")
else:
print("NO")
使用模型的流程and理解batch
'inputs为2个形状为[2 , 3]的矩阵 '
inputs = [x1, x2]
print(inputs)
'打印查看'
[tensor([[11, 21, 31],
[21, 31, 41]], dtype=torch.int32),
tensor([[12, 22, 32],
[22, 32, 42]], dtype=torch.int32)]
#---------------------------------------------
In [1]: torch.cat(inputs, dim=0).shape
Out[1]: torch.Size([4, 3])
In [2]: torch.cat(inputs, dim=1).shape
Out[2]: torch.Size([2, 6])
In [3]: torch.cat(inputs, dim=2).shape
IndexError: Dimension out of range (expected to be in range of [-2, 1], but got 2)
#------------------------------------------
In [1]: torch.cat(inputs, dim=0).shape
Out[1]: torch.Size([4, 3])
In [2]: torch.cat(inputs, dim=1).shape
Out[2]: torch.Size([2, 6])
In [3]: torch.cat(inputs, dim=2).shape
IndexError: Dimension out of range (expected to be in range of [-2, 1], but got 2)
正则表达式re.findall(正则对象,字符串)
正则对象在compile时应该善于应用()来控制界限,并使用“?:”来使其不返回到匹配到的列表里
关于单独的?,贪婪匹配是尽可能的向右查找,只到右边无法满足,尤其在前端中有着比较重要的作用,如<div>.</div>和<div>.?</div>后面的是找一个div标签里的内容
pycharm规范代码 ctrl+alt+L规范代码开发
题意
this_input = input()
a, da, b, db = this_input.split(' ')
pa, pb = "", ""
for i in a:
if i == da:
pa += i
for i in b:
if i == db:
pb += i
pb = '0' if pb == "" else pb
pa = '0' if pa == "" else pa
print(int(pa) + int(pb))
知识点:
- split量在末尾时会出现“”,不在末尾则不出现
- if和else的赋值写法 p=() if() else()