Quick Leaner学Python

作为一名资深的QL(Quick Learner),学习一门新的编程语言分分钟不在话下,Python语言,so easy,在经过如此多面向对象语言的洗礼后,接触一下函数式语言(虽然python也有面向对象)也是不错的。

我用的python版本:2.7.11,有最新的3.4


1.数据类型

布尔型:大写True,False
逻辑运算:and、or和not
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

2.语句与字符串

print语句:

print语句可以向屏幕上输出指定的文字。比如输出’hello, world’,用代码实现如下:

>>> print 'hello, world'

print语句也可以跟上多个字符串,用逗号“,”隔开,就可以连成一串输出:

>>> print 'The quick brown fox', 'jumps over', 'the lazy dog'
The quick brown fox jumps over the lazy dog

print会依次打印每个字符串,遇到逗号“,”会输出一个空格

print可以打印上面的数据

注释:

Python的注释以 # 开头

变量命名:变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头。

转义字符:

要表示字符串: Bob said "I'm OK".
代码:'Bob said \"I\'m OK\".'

raw字符串

如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了。例如:

r'\(~_~)/ \(~_~)/'

多行字符串:

可以用”’…”’表示:

'''Line 1
Line 2
Line 3'''

上面这个字符串的表示方法和下面的是完全一样的:

'Line 1\nLine 2\nLine 3'

对中文支持:

在前面加一个u

u'中文\n日文\n韩文'

当然仍可以组合使用:

ur'''Python的Unicode字符串支持"中文",
"日文",
"韩文"等多种语言'''

如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码,注意:加了这行语句就不用u了

3.List

list简介:Python内置的一种数据类型列表。list是一种有序的集合,可以随时添加和删除其中的元素

构造list:直接用 [ ] 把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list:

>>> myList= ['1', '2', '3']
>>> myList# 打印myList变量的内容
['1', '2', '3']

注意:由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型。

访问List:使用索引0开始,注意不要越界。

倒序索引: L[-1]为最后一个元素,-2倒数第二个,依次,注意不要越界。

添加元素:

L.append(xxx)//添加在尾部
L.insert(index, xxx) //添加在index(从0开始)前

删除元素:

L.pop()//删除并返回最后一个元素
L.pop(index)//删除索引为index的元素

替换元素:

L[index] = another//直接将索引为index的重新赋值

4.tuple(元组)

tuple简介:另一种有序的列表,和 list 非常类似,但tuple一旦创建完毕,就不能修改了。

表示:

>>> t = ('1', '2', '3')

现在,这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。所以,没法直接往 tuple 中添加和删除元素。
可以通过索引访问元素

单元素:

因为用()定义单元素的tuple有歧义((1)会被当成数字1),所以 Python 规定,单元素 tuple 要多加一个逗号“,”:

>>> t = (1,)
>>> print t
(1,)

构造可变的tuple:

t 有 3 个元素:’a’,’b’和一个list:[‘A’, ‘B’],下面代码只是说明我们该变得不是tuple,而是list。

>>> t = ('a', 'b', ['A', 'B'])
>>> L = t[2]
>>> L[0] = 'X'
>>> L[1] = 'Y'
>>> print t
('a', 'b', ['X', 'Y'])

所以:元组和list都是可以相互嵌套的。

5.if-else语法

我们现在只学习不同的语法:

age = 20
if age >= 18:
    print 'your age is', age
    print 'adult'
print 'END'

注意: Python根据缩进来确定代码块,具有相同缩进的代码被视为一个代码块。

缩进:据说严格按照Python的习惯写法:4个空格,不要使用Tab,不要混合Tab和空格。(PS:只要记得住,还是可以用tab)

注意:不要忘记冒号。

单个if:

1

if-else:

2

if-elif-else:

对于嵌套结构的 if … else …,我们可以用 if …和多个elif … else … 的结构(即 else if):

如:3可以改成:4

注意:执行顺序从上到下。

6.循环语句语法

看个例子就行了:

for:

5

while:

6

break:

7

continue:用法都一样

循环嵌套:

8

7.Dict

简介:一种集合,说白了就是java里的map,键值对,所以它的特点是无论多少个元素,速度都一样快,同时元素是无序的 ,key不能重复,这和hashmap都差不多,还有就是 key 的元素必须不可变,所以key不能用list。

d = {
    'jimo': 95,
    'love': 85,
    'dog': 59
}
print len(d)#求其长度

访问: 通过d[key] 查找对应的 value

注意: key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError

print d['jimo']
print d['cat']

9

所以一般这么写:

if 'cat' in d:#先判断下
    print d['cat']

更新:直接改

d['jimo'] = 70
d['cat'] = 1#若dict里没有,会直接加进去

遍历:

print d
for key in d:
    print key,':',d[key]

10

8.Set

简介:同样是一个无序不重复的集合。

创建:

s = set(['A', 'B', 'C', 'C'])
print s

11

访问Set:其实没办法访问,只能做判断:

print 'A' in s
print 'a' in s

12

遍历set:当然遍历方法和dict类似

应用:

weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])
x = 'MON'
if x in weekdays:
    print 'input ok'
else:
    print 'input error'

添加删除元素: add,remove

s = set(['A', 'B', 'C', 'C'])
print s
s.add('D')
print s
s.remove('A')
print s
s.remove('A')
print s

13

可看出:删除不存在的元素会报错。

9.函数

1.内置函数:

可以在官网查看函数:Functions

不要忘了引用库函数:import math math.cos(angle)

常用函数:

>>> range(1, 101)
[1, 2, 3, ..., 100]

2.自定义函数:

定义一个函数要使用 def 语句,然后是 函数名,参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

def mysum(L):#求L中每个元素平方的和
    return sum([i*i for i in L])

print mysum([1, 2, 3, 4, 5])

3.多个返回值:

def multiParams(x,y):
        return x+1,y+1
x,y = multiParams(1,2)
print x,y
r = multiParams(1,2)
print r

14 没错,r是一个tuple

4.默认参数:

def defaultParams(x,y=10):
    return x*2+y
x = defaultParams(1)
print x
x = defaultParams(1,2)
print x

15

5.可变参数:

def average(*args):
    if len(args)!=0:
        return sum(args)*1.0/len(args)
    else:
        return 0.0

print average()
print average(1, 2)
print average(1, 2, 3, 4)

16

10.切片

对于list和tuple都适用:

顺序切片:

L = ['a','b','c','d']
print L[0:3]#从0开始2结束
print L[1:3]
print L[:3]#从头开始0可省略
print L[:]#取所有元素
print L[::2]#第三个参数表示每N个取一个

17

倒序切片:

print L[-1:-3]
print L[:-4]
print L[-2:]

18

对字符串切片:

print 'ABCDEFG'[:3]
print 'ABCDEFG'[::2]

19

11.迭代

上面已经用过迭代。

2.索引迭代enumerate:

L = ['a','b','c','d']
for index,num in enumerate(L):
    print index,':',num
for t in enumerate(L):
    print t[0],':',t[1]

20

zip()函数可以把两个 list 变成一个 list:

>>> zip([10, 20, 30], ['A', 'B', 'C'])
[(10, 'A'), (20, 'B'), (30, 'C')]

3.迭代Dict:

可看到在Dict那里我们进行了遍历,是通过key获取到value的,现在我们直接获取value:

d = {
    'jimo': 95,
    'love': 85,
    'dog': 59
}
for v in d.values():#values() 方法实际上把一个 dict 转换成了包含 value 的list
    print v
for v in d.itervalues():# itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存
    print v

21

4.迭代dict的key和value:

for key,value in d.items():#当然也有iteritems方法
    print key,':',value

print d.items()

22

12.列表生成表达式

1.生成列表:

print range(1,11)
print range(1,11,2)
print range(1,11,3)

print [x*x for x in range(1,11)]
#相当于:
L = []
for x in range(1,11):
    L.append(x*x)
print L

23

2.生成HTML表格:

d = {
    'jimo': 95,
    'love': 85,
    'dog': 59
}
#字符串可以通过 % 进行格式化,用指定的参数替代 %s
tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()]
print '<table>'
print '<tr><th>Name</th><th>Score</th><tr>'
print '\n'.join(tds)#字符串的join()方法可以把一个 list 拼接成一个字符串
print '</table>'

24

复制到浏览器效果:25

3.条件过滤:

print [x*x for x in range(1,11) if x%2==0]
L = ['jimo','love',123,456,'lonely']
print [x.upper() for x in L if isinstance(x,str)]
# isinstance(x, str) 可以判断变量 x 是否是字符串

26

4.for循环嵌套:

print [x+y for x in 'abc' for y in '123']

27

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
主动习是一种机器习方法,它通过让模型主动选择最具代表性的样本进行训练来提高模型的准确性和泛化能力。在Python中,有一些库可以帮助我们实现主动习的功能。其中一个常用的库是libact\[1\]。libact是一个Python包,旨在让用户更容易地进行主动习。它不仅实现了几种流行的主动习策略,还提供了一种“active learning by learning”算法,该算法可以帮助用户动态地自动选择最佳主动习策略。此外,libact还提供了一个统一的接口,用于实现更多的主动习策略。 下面是一个使用libact实现主动习的示例代码\[2\]: ```python from sklearn.datasets import load_digits from sklearn.ensemble import RandomForestClassifier from modAL.models import ActiveLearner from modAL.uncertainty import uncertainty_sampling # 导入手写数字数据集 X, y = load_digits(return_X_y=True) # 初始化一个随机森林分类器 rf = RandomForestClassifier() # 初始化一个主动习模型 learner = ActiveLearner( estimator=rf, X_training=X\[:100\], y_training=y\[:100\], query_strategy=uncertainty_sampling ) # 当模型准确率不足以达到要求时,进行主动习 while learner.score(X, y) < 0.90: # 从未标记的数据中选择最具代表性的样本 idx, _ = learner.query(X\[100:\]) # 获取样本的标签 y_new = y\[idx\] # 将新的样本添加到训练集中 learner.teach(X\[idx\], y_new) # 输出模型准确率 print('Accuracy:', learner.score(X, y)) ``` 在这个示例代码中,我们首先导入了手写数字数据集,并初始化了一个随机森林分类器作为模型。然后,我们使用ActiveLearner类初始化了一个主动习模型,指定了初始训练集、查询策略等参数。接下来,我们使用一个循环来进行主动习,直到模型的准确率达到要求为止。在每次循环中,我们使用查询策略从未标记的数据中选择最具代表性的样本,并将其标签添加到训练集中。最后,我们输出模型的准确率。 如果你想使用libact,你可以使用pip命令安装它的依赖: ``` pip3 install -r requirements.txt ``` 请注意,libact要求Python 2.7, 3.3, 3.4, 3.5,但在实际测试中发现,Python 2.7可能不支持,建议使用Python 3.5\[3\]。 #### 引用[.reference_title] - *1* *3* [主动python框架libact配置教程](https://blog.csdn.net/ECNU_LZJ/article/details/104455731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [主动习在Python中的实现](https://blog.csdn.net/ai52learn/article/details/130787963)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值