为了账号安全,请及时绑定邮箱和手机立即绑定

非计算机专业的同学如何半个小时搞懂py3♂的语法

标签:
深度学习

       最近蛮多人在学python,好久没有写过东西,觉得编程语言本身并不难,所以想写写看。主要是写给非计算机专业的同学快速熟悉python这个工具,如果是计算机专业的同学最好掌握好一门语言后再来看python,会有更深刻的理解。

       再插一句,建议直接看py3了,差别不算大,唯一区别是py2看起来有些语法比较“随意”一些。我自己最开始用的py2,后来里因为tensorflow还是cuda之类的不支持2就转了3,况且3大约在未来会完全替代2。为了避免大家弄混就不介绍py2,好啦废话就说这么多,开始py教学。


-----------------------------------------------------py3-------------------------------------------------------


一、python3的数据类型(6种) 10min

1、数字类型


      int      整数,仅有的一种整数类型int,表示为长整型(类似于C中各种longlongint的合体)

      bool   布尔型,Ture&False

      float   浮点型,如1.11、 1.2E-3

      complex   复数,如1+2i

2、字符串类型(String)

      规则:(1) ' ' 和 " " 没有区别           如:a = 'man'    a = "man" 

                (2) +表示直接连接字符串     如:a = 'man' ; b = '666' ; c = a+b   c = 'man666'

                 (3) """三引号"""" 可以声明多行字符串 不需要缩进

                (4) 字符串不能改变

     使用(类似C的字符串数组)

str = 'abcdefg'

print(str)                 # 输出字符串
print(str[0:-1])           # 输出第一个到倒数第二个的所有字符
print(str[0])              # 输出字符串第一个字符
print(str[2:5])            # 输出从第三个开始到第五个的字符
print(str[2:])             # 输出从第三个开始的后的所有字符
print(str * 2)             # 输出字符串两次


3、基本数据类型(4种)(很重要)

     List  列表

     Tuple  元祖

     Sets   集合

     Dictionary  字典

     通常字典和列表用的多一点。(个人来说)


①List 列表

特性(3个):可改变,使用[ a , b , .... ]声明,元素支持数字、字符串

list = [ 'abcd', 111 , 1.23, 'man', 19999.11 ]


print (list)            # 输出完整列表
print (list[0])         # 输出列表第一个元素
print (list[1:3])       # 从第二个开始输出到第三个元素
print (list[2:])        # 输出从第三个元素开始的所有元素
print (list * 2)        # 输出两次列表

list2 = '111'
l = list + list2        # 连接两个list

list内置函数:

len(list) 返回列表元素个数

max(list)/min(list) 返回列表最大/最小值

list(seq) 将元组(Tuple)转化成列表

list内置方法:






list.append(obj) 在列表末添加obj对象

list.extend(seq) 在列表末一次性添加seq序列

list.sort() 给列表排序,前提为同一种数据

list.count(obj) 计算obj在list中出现次数

list.index(obj) 找到obj在列表中第一次出现的索引位置

list.insert(index, obj) 在index处添加obj对象

list.pop(obj = list[-1]) 括号为default值,返回该删除元素

list.remove(obj) 删除列表中第一个匹配项

list.clear()/list.copy() 清空/复制列表


②Tuple 元祖(可理解为不可重写数据的list)


特性(3个):不可改变,使用( a , b , .... )声明,元素支持数字、字符串

tuple = ( 'abcd', 111 , 1.23, 'man', 19999.11 )

基本操作同list

tuple内置函数:

len(tuple) 元组中元素个数

max(tuple)/min(tuple) 元组中最大/最小元素

tuple(seq) 将列表转化为元组


③sets 集合

特性(3个):无序不可重复,使用{ a , b , .... }声明,元素支持数字、字符串

stes = { 'abcd', 111 , 1.23, 'man', 19999.11 }


a = set('abracadabra')
b = set('alacazam')
 
print(a)
 
print(a - b)     # a和b的差集
 
print(a | b)     # a和b的并集
 
print(a & b)     # a和b的交集
 
print(a ^ b)     # a和b中不同时存在的元素

# 集合如果有重复元素会自动删除


④dictionary 字典


特性(3个):无序,使用{ keya: valuea , keyb: valueb , .... }声明,元素支持数字、字符串

dict = {'name': 'www','code':111, 'site': 'www.google.com'}

基本操作:

print (dict['name'])      # 输出键为 'name' 的值
print (dict[2])           # 输出键为 2 的值
print (dict)              # 输出完整的字典
print (dict.keys())       # 输出所有键
print (dict.values())     # 输出所有值



二、python3运算符 5min

1、注释(两种):

单行注释

# 这是一个注释

多行注释(单引号和双引号在py里相同)

'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号 
'''
"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号 
"""

2、算术运算符

+ - * /  加减乘除

% mod运算

x**y  幂运算,返回x的y次幂

// 取整除,返回商的整数部分

3、比较运算符(同C、JAVA、R)

> <  大于/小于

>= / <= 大于等于/小于等于

!= / == 不等于/等于

均返回bool型(Ture/False)

4、赋值运算

直接写等式(无需使用int等声明关键字)

a = 10

b = 'aaa'

4、位运算

& | ~ 按位与或非

^ 异或

<< / >> 所有数左移/右移

5、逻辑运算符

and  布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值

or  布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值

not  布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True

6、成员运算符

in  如果在指定的序列中找到值返回 True,否则返回 False

not in  如果在指定的序列中没有找到值返回 True,否则返回 False

7、身份运算符

is 判断两个标识符是不是引用自同一个对象

is not  判断两个标识符是不是引用自不同对象

**

is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。


**优先级问题同C,多出的成员、逻辑、身份运算符为最低级别,优先顺序是身份、成员、逻辑。


三、py3的关键字 5min

1、条件控制


if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3


注意:条件后是冒号(:); 缩进需相同 。

if 嵌套逻辑同C,但是注意缩进

2、循环语句

①while

while condition:
    statement

②for

for <variable> in <sequence>:
    <statements>
else:
    <statements>

③py特有的东东:range() 内置循环函数 + 关键字 in

数字序列:

for i in range(10):
    print(i)


for i in range(1,10):
    print(i)
#注意py里右括号边界取不到

④break、continue用法逻辑同C


四、py3迭代器(这里也是Py比较有趣的东东) iter() 5min

这个比较重要,用得好能节省很多代码量

①先声明一点py迭代器只能无脑向后遍历

list = [1,2,3,4]

it = iter(list) #这里it类似于指向list的head指针

print(next(list)) #使用next(it)可以进行操作

②或者是结合for使用

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:
    print (x, end=" ")

③遍历技巧

knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
    print(k, v)


questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
    print('What is your {0}?  It is {1}.'.format(q, a))


五、py3函数 5min

1、规则:所有函数以def开头

无return时,默认返回none

def function_name(parameters):
    function_body

2、调用函数:

同一个py文件(可称为module)直接调用函数名及参数

#附上变量作用域

x = int(1.0)  # 内建作用域
 
count = 0  # 全局作用域
def outer():
    count_outer = 1  # 闭包函数外的函数中
    def inner():
        count_inner = 2  # 局部作用域

当需要在其他module(其他py文件)引用某一个module里的一个方法时:

import module1

module.function_name(parameters)

这里几乎同JAVA模式


3、调用package

from package_name import py_name
#补充一个
import tensorflow as tf
#然后就是tf.method_name()
#每次都有冲动打成tfboys

4、自身调用(不知道咋怎么形容这个)

class Province:

    # 静态字段
    country = '中国'

    def __init__(self, name):

        # 普通字段
        self.name = name

是不是很眼熟。简单来说和JAVA的this作用相同,只不过在py中要显视地写进parameter中

public class Province:

    #静态字段
    private String country = "china";

    public void __init__(country) {
#普通字段
        this.country = country; 
    }

5、继承(省略)

之前看django的时候记的,主要是python现在一般也不会用来做web啦,就不花大篇幅写了,面向对象的东西实在太多。

如果能理解java,再来看py几乎区别就是在self那一块还有一些静态的方法、公有成员变量的差别。

实在想了解可以移步Python面向对象


六、py的IO操作 3min

①打印

print('{}+{}={}'.format(1, 2,3)
print('{word1}的英文是 {word2}'.format(word1='中国', word2='china'))
print("%d" % (num))

②写入

str = input("请输入:");
print ("你输入的内容是: ", str)

③文件IO

好吧跟C还是差不多,返回file对象

open(filename, mode)

mode如图


要求不多 不写也是极好的=-=


这样就好其实o.o

# 打开一个文件
f = open("/tmp/foo.txt", "r")

str = f.readline()
print(str)

# 关闭打开的文件
f.close()

嗯对。。open+readline就差不多ok

当然了这种操作pandas里有很多

有这么厉害的包 为什么还要手写对不XD


七、py的数据结构 5min

这里和C很像很像 by the way python底层就是c(当然了如果想做也可以是vb这种)

①stack/heap 

easy:

#用list
stack = [1, 2, 3]
#进栈
stack.append(4)
stack.append(5)
#出栈
stack.pop()
stack

②queue

queue = deque(["Eric", "John", "Michael"])
queue.append("Terry")           # Terry arrives
queue.append("Graham")          # Graham arrives
queue.popleft()                 # The first to arrive now leaves
queue.popleft()                 # The second to arrive now leaves
queue                           # Remaining queue in order of arrival
list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)
将对象插入列表

③嵌套list

py3:

matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
]

transposed = []

for i in range(4):
    transposed.append([row[i] for row in matrix])

用numpy比较容易解决 详情见numpy

import numpy as np
transposed = matrix.T


八、线程

觉得还是很有必要看一看

不过这学期有修一门课叫parallel computing

等有时间再写一篇

-------------------------------------------分割线到这里结束啦--------------------------------------------------

九、python机制(计算机专业)

关于python底层的一些东西可以帮助你更深入去了解一些东东 安利一个知乎专题:源码读python

得配上algorithm和data structure才带感 

可以看看专门的python方向的算法课MIT_Algorithm


十、py使用

环境:anaconda3(下载3开头的)

环境变量配置:安装会自动加上,记得再加上这个,前缀是conda的安装目录


ide:pycharm很不错,可以申请免费用(最近到期了,又得重新用校园邮箱apply),但是要玩转要很久

        当然了jupyter更好咯~ 对于新手来说 进入方式cmd:输入jupyter notebook或者是jupyter lab(win)

        最近用的是sublime+python若干插件(居然还挺凑合,比较喜欢sublime的暗黑简约风格)

------------------------------------------------------end--------------------------------------------------------

------------------------------------------------------end--------------------------------------------------------

原文出处

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消