菜鸟学习python编程----学习拾珍系列(一)

以下内容是前12章,讲完了元组这些

--------------------------------------------------------------------------------------------------

0.for...if...break

   break停止掉最内部的for循环,且注意break的位置

            if len(xuexiao)>2:
                for i in range(len(xuexiao)-2):
                    if xuexiao[i+1]-xuexiao[i]<33:
                        for j in range(xuexiao[i+1]+find_start,xuexiao[i+1]+step):
                            if 0<y[j]<36 and 0.5<(x.index(j,xuexiao[i+1]+find_start,xuexiao[i+1]+step)-xuexiao[i])/36<1.3:
                                xuexiao[i+1] = j
                                break

 

1.polypon(bob,n=7,length=70) #增加可读性

2.写函数接口的时候,为了保持整洁(clean)。接口的参数,尽可能只和功能有关系,内部的尽可能想办法写在里面

  e.g.用turtle用多边形画圆,涉及到n,可以用圆的周长来 n = int(2*pi*r/3)+1

    当你发现一个接口很难解释的时候,很有可能有改进的空间

3.重构

    重新组织函数,改善接口,提高复用率。

    情景:当你发现有类似代码出现的时候

4.键盘输入

python2 raw_input
python3 input
>>>text = input('what ... is your name?\n')
what ... is your name?[输出提示]
yan guoxing [键入名称给text]

5.元组比较大小,只比较第一个。

6.遇到return的话,直接不执行剩余的代码(dead code)

    尽量保证每个可能执行的路径上都遇到return,调试的时候方便。

7.增量开发 (只增加测试一小部分代码)  保证可以正常返回,return 0.0,中间添加print

def distance(x1,y1,x2,y2):

     dx , dy = x2-x1 , y2-y1

     print "dx is",dx

     return 0.0

 

9.while True 然后if break,这种的更用

while Ture:
    line = input_raw('> ')
    if line == 'done':
        break
    print line

print 'done'

11.如果你的import了自己的模块,然后之后做了修改,需要重启,或者reload。最好是重启,否则可能会有问题。

12.针对可能无限循环( maximu recursion depth exceeded)的地方,循环前后各自加print语句.

13.无限递归的情况,要确保自己有基准情形,然后在函数的开头加print语句,观察参数有没有向基准情形靠近。

14.对于菜鸟,可以在自己每个函数的开头加入print "进入**函数"的提示,就可以很显眼的知道执行的流程

15.对于字符串的操作,总是a = b.strip().split(' '),a = ' '.join(b),但是对于列表一般都是无返回值的,如a = a.sort(),必须是 a.sort(),a.sort()的返回值为None

16.对于一个东西,你既想对他进行改变,还想用它原来的值,用[:]。:对于列表,如果用a = b 则 a is b。b成为是a的引用,其实在一个函数中,形参就相当于是引用(一个重命名),所以函数内部列表发生改变,外部也发生了改变。

  还有import copy

  output = copy.deepcopy(img_resize)  ·「创建一个和原来一样的变量」

t=[1,2,3]
t2=t[:]
t2.sort() 
>>>t
[1,2,3]
>>>t2
[3,2,1]

17.列表删除pop del  remove

t.pop(1) 指定位置,默认删除尾部

del t[1:6] 指定位置【为了坚持一个风格,我自己常用pop】

t.remove('b') 指定内容

18. in 也经常用于dict,判断key,也可以把值取到list中,再用in判断

    a = dict.values() a返回了一个列表,a['key']是用的[ ]取value。

    知识点:in在list中随着长度边长,搜索时间边长,但是在dict中算法用的散列表算法,长短时间都一样。

19.for key in sorted(dict)按照顺序遍历所有键

20.列表可以作为字典的value

21.返回一个元组的函数 

def min_max(x):
    return min(x),max(x)

22. 可变长参数元组

    *开头的参数名,会将所有参数放到一个元组上,接受不定的参数。比如内置函数max

def printall(*args):
    print args

23.zip接受字符串元组列表,变成元组列表,常与fordict连用

    访问元组列表

s = 'abc'
t = 1,2,3【元组】或者 t = [1,2,3]
print zip(s,t)
>>>[('a',1),('b',2),('c',3)]获得一个元组列表
print zip(s,t)[1]
>>>('b',2)

for s,t in zip(s,t)访问元组列表
***
end

print dict(zip(s,t)) 快捷创造字典
>>>{'a': 1, 'c': 3, 'b': 2}

24.dict & items 字典与元组列表

    temp_x2 = list(count_dict.keys())
    temp_y2 = list(count_dict.values())

    字典用items获得元组列表,元组列表用dict获得字典。

d = {'a': 1, 'c': 3, 'b': 2}
t = d.items()
print t   >>>[('a',1),('b',2),('c',3)]

25.字典的键必须是元组或者字符串,不可变的这种,不能是列表。

    在有些环境中,如返回语句中,一般是选择创建元组

    当你向一个函数传序列的参数的时候,选择元组可以减少潜在的由于建明导致的不可预知的行为。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值