最近被各种人工统计浪费了太多时间,才逼的自己学Python了。一个从事AI方向的人,居然还不会用Python,他到底有多水…是时候努力学习一下,这都是提高效率的工具,就想自己当初花时间学git,《鸟哥的Linux私房菜》一样,工具一定要用熟练!!!

我目前主要是要处理Excel表格,所以需学一下pandas;又因为Python基本都忘光了,所以还是需要学一下python的基本语法。

入门资源

(虽然廖雪峰老师的入门教程很流行,但是Python简明教程会帮你再顺一遍)
Python简明教程
廖雪峰python教程

其他资源

  1. IDE : spyder,比pyCharm好用
  2. Pandas: 看官网就够了。Pandas 中文
    在查找资源上浪费了太多时间,**为什么不直接去官网上看一看呢?**非要看别人博客里二次加工的好理解?
  3. 官方文档:Python官方文档

python官网
https://docs.python.org/3/
强烈推荐速浏览 Python 标准库文档 以获得所有可用的模块。
https://docs.python.org/zh-cn/3/library/

常用语法

迭代

使用for循环来遍历,称为迭代。首先要是个可迭代的对象。

from collections import Iterable
isinstance('abc', Iterable)
  1. list遍历
l = range(5)
for i in l:
	print i
  1. 元组遍历
d = {'x': 'A', 'y': 'B', 'z': 'C' }
for k,v in d.iteritems():  # 注意,这里并不是for k,v in d
	print k,',',v
  1. 同时打印索引和值,像C++那样
for i,value in enumerate(['A', 'B', 'C']):
	print i,value
  1. 同时引用多个变量
l = [(1,2,3),(4,5,6)]
for x,y,z in l:
    print x,y

列表生成式

为什么要有列表生成式?它可以让代码很简洁。同样的构造一个list,体会一下下面两种方式的差别。

L=[]
for x in range(10):
	if x % d ==0:
		L.append(x*x)
L = range(10)
[x*x for x in L if x % 2 == 0]

可以使用多个变量,对dict

 d = {'x': 'A', 'y': 'B', 'z': 'C' }
 for k,v in d.iteritems():
 	print k,'=',v
[k+'='+v for k,v in d.iteritems()]

可见,列表生成式方便的太多了。

生成器

generator。不是一下子就返回所有的数据,而是每次只返回一部分。
使用next返回下一个。
创建generater的两种方式:

  1. 列表生成式的[]换为()
	g = (x*x for x in L if x % 2 == 0)
  1. 函数内部使用yeild关键字。
    每次调用函数时,遇到yeild就返回;第二次调用函数时,会从上一次yeild的下一行执行。

高级技巧/方便技巧(摘抄自Python之禅工作号)

  1. 用in 代替 or

    if x==1 or x ==2:
    	pass
    if x in (1,2):
    	pass
    
  2. 字典代替多个if else

    def fun(x):
        if x == 'a':
            return 1
        elif x == 'b':
            return 2
        else:
            return None
    
    def fun(x):
        return {"a": 1, "b": 2}.get(x)
    
  3. 字典推导式

    >>> dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    >>> double_dict1 = {k:v*2 for (k,v) in dict1.items()}
    >>> double_dict1
    {'a': 2, 'b': 4, 'c': 6, 'd': 8, 'e': 10}
    
  4. 集合推导式(只用{ }就表示集合,即c++里面的set,没有重复元素

    >>> set1 = {1,2,3,3,4}
    >>> double_set = {i*2 for i in set1}
    >>> double_set
    {8, 2, 4, 6}
    
  5. 列表中出现次数最多的元素

    >>> nums = [1,2,3,3]
    >>> max(set(nums), key=nums.count)
    

Python简明教程笔记

函数

  1. 可以定义默认参数值

    def say(message, times=1):
        print(message * times)
    
  2. 关键字参数
    牛逼!!!!这就是自已一直疑惑的。
    就是pandas里面调函数时的index=False,一直没有弄明白!!!

    def func(a, b=5, c=10):
        print('a is', a, 'and b is', b, 'and c is', c)
    func(3, 7)
    func(25, c=24)
    func(c=50, a=100)
    
  3. 可变参数

    def total(a=5, *numbers, **phonebook):
        print('a', a)
        # 遍历元组中的所有项
        for single_item in numbers:
            print('single_item', single_item)
        # 遍历字典中的所有项
        for first_part, second_part in phonebook.items():
            print(first_part,second_part)
    print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))
    
  4. 返回两个值

    def get_error_details():
        return (2,'details')
    

数据结构

  1. 字典
    key:val使用冒号,key必须是不可变的,比如数字,字符串,字符,元组()

    d={'1':'abc',2:[3,3,3]}
    删除:del d['1']
    添加: d['2'] = range(3)
    查询:if '1' in d:
    遍历:使用items()或者iteritems()
    for name, address in ab.items():
        print('Contact {} at {}'.format(name, address))
    
  2. 序列
    列表、元组、字符串都是序列的一种。
    序列主要特征:成员测试(如in not in)、索引操作、切片

  3. 集合,就跟C++里面的set是一样的,没有重复元素
    bri = set([‘brazil’, ‘russia’, ‘india’])

  4. 引用
    引用当你创建了一个对象,并把它赋值给一个变量时,这个变量只是 引用 了这个对象,变量并不能代表对象自身!因此,你可以把变量名当作一个指针,它指向储存对象的那一块计算机内存。这称作 绑定 名称到对象,只能通过切片获取副本

    a=[1,1,1]
    b=a 这两个变量是指向的同一个对象
    b= a[:] #这就是建立副本了
    

持续更新

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐