Python系统学习

原创 2015年12月22日 10:02:30

What is Python

Python is an east-use program language, It is useful now, and has been implied to many open-source project, also is Go, which has been used in my favorite Docker.

Basic

Small examples

  • 斐波那契数序列
a,b=0,1
while b<10:
    print(b, [end=' '])
    a,b=b,a+b

Attention: end=’ ’ can replace \n with ’ ‘

Key Word

if - elif - else

if x<0:
    x=0
    print("Negative changed to zero")
elif x==0:
    print("Zero")
elif x==1:
    print("Single")
else:
    print("More")

for

for x in array
    print(x)

break, continue,loop-else

for x in array
     if n%x==0: break;
     else continue;

pass

一般用于提醒,类似于空语句

del

使用索引而不是值从列表中删除一个元素。与具有返回值得pop()方法不同。del语句也可以用来删除列表的一个片段或者清空整个列表

del a[index]
del a[x:y]
del a[:]
del a: 注销变量,收回空间

SP function

range & len

for i in range(begin, stop, step)
    print(i)
for i in rande(len(array))
    print(array[i])

list

print(range(10))
list(range(10))

append

array.append(element)

Custom function

def

def fun(parameters list)
    functional module
    return result
def fib(n):
    result=[]
    a,b=0,1
    while b<n:
        result.append(b)
        a,b=b,a+b
    return result
i=6
def f(arg=i):
    print(arg)
f()

The ans is 6
默认值只被赋值一次

def f(a,L=[]):
    L.append(a)
    return L
print f(2)
print f(1)
print f(3)

The ans is
[2]
[2, 1]
[2, 1, 3]
You can also use none to replace the [] to avoid the accumulate ans.
Of course, you can point many parameters who has its default value.

learn of argments

1> * & **
*用来传递任意个无名字参数,这些参数会以一个元组的形式访问
**用来传递任意个有名字的参数,这些参数用字典来访问
(*name必须出现在**name之前)

changeable parameters list

We use *name to include this point
Also, **name can distinguish the parameters.

Lambda

fun = lambda [parameter]:ans
print(fun(argments))
def make_incrementor(n):
    return lambda x:x+n
>>fun = make_incrementor(42) [fun=x+42]
>>fun(2)
>>44

Data Structure

list

list.append(x): 在列表的末尾添加一个元素
list.extend(L): 在列表的末尾添加一个指定列表的所有元素
list.insert(i,x): 在指定位置插入一个元素
list.remove(x): 删除列表中值为x的第一个元素,如果不存在这样的元素则引发错误
list.pop(i): 删除列表中指定位置元素并返回它(指元素值)。如果省略索引,a.pop()会删除并返回列表中的最后一个元素
list.index(x): 返回列表中值为x的第一个元素的索引,如果不存在这样的元素则引发错误
list.count(x): 返回列表中元素x出现的次数
list.sort(): 对列表中的元素进行排序
list.reverse(): 反转列表中的元素

用列表实现堆栈
要想在堆栈顶部添加一个元素,可以使用append()方法;要想要返回堆栈顶部的元素,可以使用不指定索引参数的pop()方法

用列表实现队列
想要在对列尾部添加一个元素,可以使用append()方法;想要返回对列首部的元素,可以使用指定参数为0的pop()方法

简单的列表推导式

[x*y for x in vec1 for y in vec2]
[vec1[i]*vec2[i] for i in range(len(vec1))]

元组

u = x, y, z: 合并
x, y, z = u: 分解

set [no repeat elements]

set = {x, y, z, ...}
set2 = set({x, y, z, ...})
- | & ^ operations
a={x for x in 'abracadabra' if x not in 'abc'}

key:value

Deal Case

String

Class

This is a big top, I learn it because of necessary to modify gem5.

definition

class<__class_name>
<code>
__private_attrs // private statement, self.__private_attrs
def fun // it should include argument-self
__private_method // private fun, self.__private_method
__init__  构造函数,在生成对象时调用
__del__   析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用
__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
Example:
#类定义
class people:
    #定义基本属性
    name = ''
    age = 0
    #定义私有属性,私有属性在类外部无法直接进行访问
    __weight = 0
    #定义构造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s is speaking: I am %d years old" %(self.name,self.age))

p = people('tom',10,30)
p.speak()

inherit

class<__class_name>(__parent_class)
<code>
Example:
#单继承示例
class student(people):
    grade = ''
    def __init__(self,n,a,w,g):
        #调用父类的构函
        people.__init__(self,n,a,w)
        self.grade = g
    #覆写父类的方法
    def speak(self):
        print("%s is speaking: I am %d years old,and I am in grade %d"%(self.name,self.age,self.grade))

s = student('ken',20,60,3)
s.speak()

相关文章推荐

Python全套系统学习课程

  • 2017年10月31日 15:21
  • 76B
  • 下载

机器学习系统设计.Python

  • 2017年02月23日 20:10
  • 93KB
  • 下载

【caffe学习笔记之5】Win10系统下Caffe的Python接口设置方法并绘制网络结构图

【准备工作】 前面几节介绍了win10系统下caffe-master的配置方法以及cifar10数据集的训练方法,并简要介绍了Matlab接口如何配置。想要更为形象的了解caffe框架下诸多网络模型的...

零基础如何系统的学习python

零基础如何系统的学习python

Python之《机器学习系统设计》第十章

第十章:计算机视觉:模式识别 使用mahotas来处理图像 import mahotas as mh from matplotlib import pyplot as plt image = mh.i...

python自动化运维学习------使用模块psutil获取系统cpu、内存、磁盘、网络、进程等信息

系统基础信息采集模块作为监控模块的重要组成部分,能够帮助运维人员了解当前系统的健康程度,同事也是衡量业务的服务质量的依据,比如系统资源吃紧,会直接影响业务的服务质量及用户体验,另外获取设备的流量信息,...

请不要重复犯我在学习Python和Linux系统上的错误

本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习、使用的对象,它简单、易用、好操作、界面绚丽,对于想接触Linux的新手来说是非...

python 系统学习笔记(八)---文件操作

模式 描述 r 以读方式打开文件,可读取文件信息。 w 以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容 ...
  • ychw365
  • ychw365
  • 2013年03月07日 09:59
  • 2764
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python系统学习
举报原因:
原因补充:

(最多只允许输入30个字)