Python 学习笔记(自用)(有C++基础)(连载)

来源:互联网 发布:怎样制做淘宝原图 编辑:程序博客网 时间:2024/06/16 00:24

我是在廖雪峰的官方网站上学得,讲的不多不详细,细节请自行百度

1 优缺点

优点:代码量少,“优雅,明确,简单”

缺点:速度慢,因为Python是解释型语言,相对C这种直接编译的语言就慢很多

用中文中的’成语‘等可以很好的类比

2 数据类型和输入输出

python中数据类型是动态的即不用像c一样指定 int a=13,而可以a=13 解释器会根据实际情况来解释变量类型

print()是输入函数,py中用单引号代替了双引号,也就是字符和字符串看起来没有区别

print(' my name is %s and I\'m %d years old'%(名字,年龄),'nice to meet you\n')

printf("my name is %s and I\'m %d years old nice to meet you\n",名字,年龄)

以上是PY和C的同一个输出语句 对比一下

input()是输入函数,直接读字符串

a=input('输入一个整数')

上面一句话等价于C中的

char a[10];

printf("输入一个整数\n")

scanf("%s",a)


那么很明显 a是一个字符串

在py中如果你输入了 13

然后再写 print(2×a)

输出结果是1313

因为 a默认是字符串

要完成输出26 可以这样写

print(2*int(a))


Py中用数据类型函数对字符串进行转换


3 list和tuple

list 结合了数组和链表(有兴趣可以研究以下底层结果)

L=['a','b','c']

L[0],L[1]....L[len(L)-1]

L[-1]=L[len(L)-1]

.

.

.

L.append('d')

L.insert(4,'e')

L.pop()

L.pop(0)

二维数组可以用元素是链表的链表

以此类推


tuple可以看成const的list


4 条件语句

if a>14:

 pass

elif a>12:

 pass

else :

 pass

5 循环语句

有for和while

for i in range(100):

 print(i+1)

n=1

while n<=100:

 print(n)

 n+=1


6 dict 和 set

dict叫做字典和stl中的map一样,键值要是不可变的


7 定义函数

def my_abs(x):

  if x>=0:

    return x

  else:

    return -x

没返回值自动返回None


8 函数参数

和c++一样,参数可以设置默认值

同时还有可变参数(数组),关键字参数(map)


9 切片

操作对象是一段区间,参数是3个(left,right,dx)

左端点,右端点,间隔

比如取100内的偶数

L=list(range(101))[0:100:2]


10 迭代

和c++一个意思,

可以有多个迭代器

for k,v in dict1.items() :

  print(k,'=',v)


11 列表生成式

即生成一个满足一定条件的列表

[i*i for i in L if L[i]>=0]

i×i是函数

(双重)循环指定迭代内容和条件决定了列表内容


12 生成器

L = [x * x for x in range(10)]
这是列表生成式,但如果一个列表超级长,而用的时候只使用很少的一部分,这样就浪费了大量空间
g = (x * x for x in range(10))
这是构造一个生成器g,通过next(g)得到运行一次的结果并记录
>>> next(g)0>>> next(g)1>>> next(g)4>>> next(g)9>>> next(g)16>>> next(g)25>>> next(g)36>>> next(g)49>>> next(g)64>>> next(g)81>>> next(g)Traceback (most recent call last):  File "<stdin>", line 1, in <module>StopIteration

按照优雅的原则我们会用

for n in g:

  print(n)

这样表示

那自己要如何写生成器呢

这里用到了yield 有点像return


这里挂上一个杨辉三角

def yanghui(n):
    k=1
    L=[1]
    while k<=n:
        yield L
        L.insert(0,0)     #首尾补0方便列表生成
        L.append(0)
        len1=len(L)
        L=[a+b for a,b in zip(L[0:len1-1],L[1:len1])]     #L[i][j]=L[i-1][j-1]+L[i-1][j]
        k=k+1
for n in yanghui(10):
    print (n)
  


原创粉丝点击