您的位置:首页 > 编程语言 > C语言/C++

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

2017-08-27 10:05 435 查看

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

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)

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐