0x21 python基础,兴趣为主

01数据结构

1.变量的三种基本类型:

  1. 整型(int)
  2. 字符串型(string)
  3. 浮点型(float)
   我们可以使用type()来打印出变量的类型

2.另外四种重要类型

  1.集合(set)

  2.列表(list)

  3.元组(tuple)

  4.字典(dict)

  set和dict内置哈希算法所以查找速度很快

 

02文件读写

 1 gt100 = open('/home/liuyang/Desktop/01-自由之光/file.txt','w')
 2 for line in open('/home/liuyang/Desktop/01-自由之光/data.txt'):
 3     #逐行读取
 4     line = line.strip()
 5     #去掉/n
 6     id_,name,score = line.split()
 7     # 以空格为分界线 分别赋值给三个变量
 8     print('id:{} name:{} score:{}'.format(id_,name,score))
 9     # 打印
10     gt100.write('{},{},{}\n'.format(id_,name,score))
11     # 逐行保存

以后这用简单的数据使用awk将会更快

 

03使用模块

1.第三方模块

  sys,re,等等

  如果你要进行Web开发使用 django,flask等等

2.自己的模块

  import my_py_name  as mp

  引用方法 mp.calc()

 

04函数式编程

nums = [1,2,5,8,10]
gt5 = filter(lambda v: v>5,nums)
# filter的参数 一个函数,一个列表 
# 这个高阶函数对第二个参数每个元素都使用 如果满足True保留元素 不满足则继续迭代
list(gt5)
# 列表生成器 
gt6 = [i for i in nums if i>6]
print(gt6)
# 翻倍操作
gt10 = [i for i in nums if i%2==0]
print(gt10)
__init__ 相当于java 的构造函数

05一道面试题+测试思想

  对两个排过序的列表进行合并,法一:sorted方法 法二:自己编一个

# 一个比较难的面试题
a = [1,1,3,4,4]
b = [2,3,4,6]
def combin_sort_1(a,b):
    # 使用集合求并集
    return sorted(set(a)|set(b))

def combin_sort_2(a,b):
    res = list(set(a))
    for _b in b:
        # 去除重复的元素
        if _b in res:
            continue
        for (idx,_a) in enumerate(res[:]):
            # 这一个函数不能作用与集合
            # enumerate 这个函数返回 第一元素的位置 和元素值
            if _b > _a:
            # 如果已经到了列表的末尾了
                if idx == len(res)-1:
                    res.append(_b)
                else:
                    continue
            else:
                res.insert(idx,_b)
                break
    return res
print(combin_sort_2(a,b))
print(combin_sort_1(a,b))
# 代码测试的思想
import random
def main():
    # 随机生成两个长度不等的列表,并且进行排序
    # random.sample(范围,个数)
    frist = sorted(random.sample(range(100),random.randint(3,6)))
    second = sorted(random.sample(range(100),random.randint(3,6)))
    
    comb_1 = combin_sort_1(frist,second)
    comb_2 = combin_sort_2(frist,second)
    
    # 对比两个方法的结果
    #print(comb_1)
    #print(comb_2)
    assert comb_1 == comb_2
    # 如果结果不一样就会报错
    
if __name__ == '__main__':
    for i in range(100):
        main()
    print("测试成功")

 总结

1.利用集合的思想,直接求并集,达到去重的目的,在利用sorted函数进行排序

2.列表的简单操作insert,append

3.random.sample 参数范围,列表元素e个数

4.在遍历列表时,如果要改变列表就需要res[:]来复制数据

5.assert的测试思想

6.__main__的使用

posted @ 2019-06-08 10:48  childhood_2  阅读(223)  评论(0编辑  收藏  举报