附录1:python记事本

dir()函数:函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。
notebook中的line型开关%:针对全局
cell型开关%%:针对当前cell
%whos:列出自定义的对象,%whos能看到的作用域为globals()及其下属层,因此,%whos不能发现在__builtins__层创建的对象
关于__name__对象:如果在当前作用域下,__name__的值就是__main__,如果执行其他作用域的__name__,值就不再是__main__,这就确保了当前只有一个程序入口,实例如下:

>>> __name__
'__main__'
>>> import re
>>> re.__name__
're'

locals()和globals() 不在任何一个函数体内时,两者是同一个对象,即 locals() is globals(),结果为True

内置函数enumerate():用于将可遍历对象加上索引,其返回值为一个enumerate对象,其内部的每个元素用元组保存,函数调用说明为:enumerate(iterable,[start=n]),start=n在中括号[…]内,说明是可选参数,其意义为设置索引开始的序号:

>>> dict(enumerate('python',start=2))
{2: 'p', 3: 'y', 4: 't', 5: 'h', 6: 'o', 7: 'n'}

字典的遍历:字典也是一个可迭代对象,遍历方式可以如下:

dic={key:elem for key,elem in enumerate('python')}
for (key,elem) in dic.items():
    print(key,elem)

strip()和split():在文本处理的任务中,常常用到这两个类方法,strip()用于去除首尾的指定字符,split()用于文本分隔:


1.strip():
有参数时,首尾各自删除字符序列中的字符,直至遇到不在序列中的字符;
无参数时,首尾删除默认字符(' ','\t','\n','\r')

# S.strip([chars]) -> str
string='\t123abcrunoob321\r\n'
print(string)
print(string.strip())

string2='123333456123abcrunoob1234321'
print(string2.strip('123'))

# 结果:
>	 123abcrunoob321
>
>123abcrunoob321
>456123abcrunoob1234

2.split():
按照参数字符分隔字符串,sep为关键字参数,是分隔的标志符

# S.split(sep=None, maxsplit=-1) -> list of strings
string="Line1-abcdef \nLine2-abc \nLine4-abcd"
print(string.split())
print(string.split(' '))# 仅按照空格进行分隔
print(string.split(sep='e',maxsplit=1))# 以空格为分隔符,分隔成num+1即:两个

# 结果:
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc', '\nLine4-abcd']
['Lin', '1-abcdef \nLine2-abc \nLine4-abcd']

sep默认为所有空字符,maxsplit=-1默认进行全部分隔,如果为其他值,则得到maxsplit+1个子字符串
将数字转为二进制列表

def binary_encode(num,num_digits):
    #num是输入的数字,num_digits是二进制设置的位数
    return [num >> d & 1 for d in range(num_digits)][::-1]

fig1
将01数值列表转为十进制数

def arraytoint(binarray)->'int':
    import functools
    #偏函数
    bintoint=functools.partial(int,base=2)
    return bintoint("".join([str(i) for i in binarray]))

这种方式常用在状态压缩,比如有一个bool数组记录某种状态:
我可以把数组[1,0,1,0]=>b(1010)=>int 10,即把一个数组空间压缩到一个整数,在动态规划中能降低空间复杂度
zip()

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,返回zip对象

zip([iterable1, iterable2,...])

fig2
dict.get()

D.get(k[,d]) -> D[k] if k in D, else d.

如果key在字典中,就返回dict[key]的value,否则返回参数d,应用:NLP中dataset的text编码

text_encoded=[word_to_idx.get(word,word_to_idx["<unk>"]) for word in text]

vars()
vars()返回对象object的属性和属性值的字典对象,对比dir(),dir返回了对象的属性,但没有属性值,dir返回的是列表对象,vars则是字典对象;
如果没有参数,就打印当前调用位置的属性和属性值:
fig3
train_data.examples[0]对象有两个对象:label和text,可看到各自有对应着的值
python的and和or以及&和|
当两边的操作对象不是数值对象时为逻辑运算,and等价于&,or等价于|,表达式的返回为True或者False,但当两个对象为数值对象时:
如果a,b是数值对象, 则&与|表示位运算, and与or需要依据是否非0来决定输出:

# 2的二进制是10,1的二进制是01,01与10得到00 
1 & 2         # 输出为 0, 
1 | 2          # 输出为3

*************************************************
# 判断变量是否为0, 是0则为False,非0判断为True,
# and中含0,返回0; 均为非0时,返回后一个值, 
2 and 0   # 返回0
2 and 1   # 返回1
1 and 2   # 返回2

# or中, 至少有一个非0时,返回第一个非0,
2 or 0   # 返回2
2 or 1   # 返回2
0 or 1   # 返回1 

from __future__ import division
在python2 中导入division(精确除法),即from __future__ import division ,当程序中没有导入该特征时,/操作符执行的只能是整除,也就是取整数,只有导入division以后,/执行的才是精确除法;
现在python3中已经支持了精确除法,所以无需再导入division;
通过jupyter notebook安装第三方包
这种情况可以打开jupyter的命令模式。正常情况,jupyter notebook的cell是绿色的,我们可以在绿色cell里输入代码。但如果我们将鼠标点击cell框的左侧,会发现cell变成蓝色的:
fig4
当cell框变成蓝色的时候,记作命令行模式。命令模式下可以执行命令,比如pip install packagename
另外,在命令行模式下,开启大写,按M会使当前cell进入进入Markdown模式;按Y则退出Markdown模式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值