python学习记录

一、python基本语法

1、for循环

  1. 用法一:
for i in range(d_model):

此处不能写作 for i in d_model: (d_model为int型),必须使用range

  1. 用法二
enc_input = [[src_vocab[n] for n in sentences[i][0].split()]]

2、 print函数

age = 10
print("我的年龄是 %d"%(age)+"岁了")

print(f"Comparing `{model_1}` and `{model_2}`")

其中%s表示输出一个字符串,%d整数,%f浮点数

3、pow()函数

4、split()函数

通过指定分隔符对字符串进行切片,并返回分割后的字符串列表。

  1. 用法一
enc_input = [[src_vocab[n] for n in sentences[i][0].split()]]

其中sentences[i][0]为字符串。

5、列表删除元素del、list.pop()、list.remove()、list.clear()

5.1 del

del:根据索引值删除元素

del listname[index]
del nums[1: 4]

5.2 list.pop()

pop():根据索引值删除元素。不写 index 参数,默认会删除列表中的最后一个,类似出栈

listname.pop(index)
nums.pop(3)

5.3 list.remove()

remove():根据元素值进行删除.只会删除第一个和指定值相同的元素,而且必须保证该元素是存在的,否则会引发ValueError 错误。故在使用 remove() 删除元素时最好提前判断一下。

nums.remove(36)

5.4 list.clear()

clear()用来删除列表的所有元素,也即清空列表。例:url.clear()

6、append()函数、extend()函数、+

append()在列表尾部追加一个新元素,在列表中只占一个索引位,在原有列表上增加。

A = [1, 2, 3]
B = [4, 5, 6]
print(A.append(B))
print(A)
None
[1, 2, 3, [4, 5, 6]]

extend()函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

enc_inputs.extend(enc_input)
A = [1, 2, 3]
B = [4, 5, 6]
print(A.extend(B))
print(A)
None
[1, 2, 3, 4, 5, 6]

+:实际上生成了一个新的列表来存放这两个列表的和,只能用在两个列表相加上。

A = [1, 2, 3]
B = [4, 5, 6]
print(A+B)
print(A)
[1, 2, 3, 4, 5, 6]
[1, 2, 3]

7、类

多态,举例:s是Student类型,它实际上拥有自己的 whoamI()方法以及从 Person继承的 whoamI方法,但调用x.whoamI()总是先查找它自身的定义,如果没有定义,则顺着继承链(MRO,深度优先保留右侧)向上查找,直到在某个父类中找到为止。

8、切片

sequence[start:end:step]

end: 切片结束的位置(不包含end)。如果省略,默认为序列的末尾。
二维数组x的切片:

x[:, 0::2] = np.cos(x[:, 0::2]) 
#表示行不切片,列切边且步进值为2;取出来之后做cos运算

9、file函数

9.1 open()函数

open(file, mode='r')

在利用Python读取txt、csv等文件时,有时会出现**\ufeff、\u202a**等非法字符,其若出现在解析文件路径中,如txt文件中为文件路径的话,通常会出现如下错误:“OSError: [WinError 123] 文件名、目录名或卷标语法不正确”,不注意非法字符的话,很难解决。

[word.replace('\u202f', ' ').replace('\xa0', ' ').replace('\u2009', ' ') for word in word_pair]

上述代码将窄非换行空格\u202f)、不换行空格\xa0)、窄空格\u2009)替换为普通空格。结果是生成一个新的列表,其中每个字符串中的特殊空白字符都被替换为普通空格。

9.2 file.readline()函数

   with open('dataset/fra.txt', 'r', encoding='utf-8') as f:
        raw_text = f.readlines()

10、set()函数

set([iterable])
char in set(',.!?')#检查 char 是否是标点符号,.!?之一

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。set() 需要传递进来可哈希的元素(hashable items)。
数据类型为set,不是list!
对于一维列表可以用list()转换为list类型。例:list(set(nums))
对于二维列表****直接使用set会报错TypeError: unhashable type: “list”

res = list(set([tuple(t) for t in lst]))
res = [list(s) for s in res]

11、优先级

' ' + letter if _no_space(letter, word[i - 1]) else letter

运算符+优先于 if-else 条件表达式

12、join()函数

'sep'.join(sep_object)
#sep:分割符,可为“,、;”等。
#sep_object:分割对象,可为字符串、以及储存字符串的元组、列表、字典。
';'.join('abc') #输出结果为:'a;b;c'  

13、enumerate() 函数

用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据下标和数据,一般用在 for 循环当中。

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))=
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print i, element
...
0 one
1 two
2 three

14、item()和items()函数

item()的作用是取出单元素张量的元素值并返回该值,保持该元素类型不变;取出的元素值的精度更高,所以在求损失函数等时我们一般用item()。
items()的作用是把字典中的每对key和value组成一个元组,并把这些元祖放在列表中返回。

15、字典 get()函数、dict.values()

get() 函数返回指定键的值。

vocab.get(word, unk_index)

尝试在 vocab 中查找 word 的值(通常是索引)。如果 word 存在于 vocab 中,则返回对应的值(索引)。如果 word 不存在于 vocab 中,则返回 unk_index。
values() 方法返回的是一个视图对象,而不是真正的列表。如果需要将其转换为列表,可以使用 list() 函数。

16、yield ,迭代器,生成器;break,continue

yield是一种能够暂时中止函数执行的语句。
迭代器:是一种可以迭代以检索元素的类型。 Python的下面list、dict、tuples都可以迭代的,所以这些对象就是迭代器。
生成器:生成器通过每次取出元素执行处理来生成元素。

#迭代器
def base_code_pool():
    """BASE编号池 1-3 """
    for i in range(3):
        yield 'BASE-%s' % str(i + 1)
#生成器
gen = base_code_pool()
print(next(gen))
print(next(gen))
print(next(gen))
#输出
BASE-1
BASE-2
BASE-3
[Finished in 167ms]

python中break与continue区别是:
1、break关键字用于跳出当前所在的循环,用于完全终止循环,程序将跳出循环体,不再继续执行后续的循环迭代。
2、continue关键字用于跳过当前循环迭代,继续执行下一次循环迭代,不会中断整个循环。

17、assert(断言)

assert True     # 条件为 true 正常执行
assert False    # 条件为 false 触发异常,返回AssertionError
assert model_1 in candidate_config, f"{model_1} not found in candidate config"
#模型1不在dict中返回f"{model_1} not found in candidate config"。其中f"{model_1}表示model_1的名字,为传入值。

18、ord()函数

ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值或者 Unicode 数值

ord('a') #97

19、哈希

可变对象(列表、字典、集合、字节数组)无法用于哈希操作,而不可变对象(整数、浮点数、字符串、元组、布尔值、复数、不可变集合)是可以进行哈希的。这是因为哈希值用于在哈希表(如字典、集合)中存储和查找数据,而哈希表要求键是不可变的,以保证键的哈希值在对象创建后不会改变。

20、

二、math包

1、math.power()函数

math.pow(2, 3) #23次方

三、numpy包

1、np.power()

np.power(2, 3) #23次方
np.power([2,3], [3, 4]) #23次方和34次方

2、np.array

3、np.ones()

函数返回给定形状和数据类型的新数组,其中元素的值设置为1。

np.ones(shape, dtype=None, order='C')

4、numpy.triu()

接受一个二维数组(即矩阵)作为输入,并返回该矩阵的上三角部分

5、numpy广播机制Broadcast

广播机制的执行过程:
1.如果维度个数不同,则在维度较少的左边补1,使得维度的个数相同。
2.各维度的维度大小不同时,如果有维度为1的,直接将该维拉伸至维度相同。

四、matplotlib包

4.1 matplotlib.use()

matplotlib的use()命令其实是用来配置matplotlib的backend (后端)的命令。所谓后端,就是一个渲染器,用于将前端代码渲染成我们想要的图像。
Pycharm运行的时候,默认的后端是Qt5AggAgg 渲染器是非交互式的后端,没有GUI界面,所以不显示图片,它是用来生成图像文件。Qt5Agg 是意思是Agg渲染器输出到Qt5绘图面板,它是交互式的后端,拥有在屏幕上展示的能力。

import matplotlib
matplotlib.use('Agg')

五、collection包

5.1 defaultdict()

dict的子类,可以调用提供默认值的函数

voc_fre = defaultdict(int)

六、time包

6.1 time.time()

#该方法包含了其他程序使用CPU的时间,返回值是浮点数
import time
start=time.time()
#中间写上代码块
end=time.time()
print('Running time: %s Seconds'%(end-start))

参考文章:

1、 matplotlib.use;https://blog.csdn.net/yyywxk/article/details/117294208
2、\ufeff、\u202a:原文链接:https://blog.csdn.net/u011501388/article/details/107094007
3、set函数:https://www.runoob.com/python/python-func-set.html
4、yield 迭代器 生成器:https://blog.csdn.net/u013589130/article/details/129045453
5、break,continue:https://docs.pingcode.com/ask/46599.html
6、python中的extend功能及用法:https://blog.csdn.net/weixin_43283397/article/details/104292540
7、time.time():https://blog.csdn.net/asialee_bird/article/details/79673860

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值