Python数据分析笔记#1 语法基础

目录

  • 缩进
  • 对象
  • 注释
  • 函数和对象方法调用
  • 变量和参数传递
  • 动态引用
  • 属性和方法
  • 引入import
  • 二元运算符
  • 可变与不可变对象
  • 数值类型
  • 字符串
  • 布尔值
  • 类型转换
  • 控制流
  • 三元表达式

Python语法基础

在本篇中将概述基本的Python概念和语言机制。

语言的语义

Python的语言设计强调的是可读性,简洁和清晰

使用缩进而不是括号

Python使用空白字符(tab和空格)来组织代码,而不是像其他语言,比如R,C++,JAVA和Perl那样使用括号。

看一个排序算法的for循环:

for x in array:
    if x in pivot:
        less.append(x)
    else:
        greater.append(x)

冒号标志着缩进代码块的开始,冒号之后的所有代码的缩进量必须相同,直到代码块结束。

我很喜欢Python的一点就在这里,用空格代替括号使得整个代码都简洁美观,不会像别的语言那样可能漏掉括号。大多数人都是使用四个空格,建议你也是。

python的语句不需要用分号结尾。但是分号可以用来给同一行的语句切分:

a = 5; b = 6; c = 7

不建议将多条语句放到一行,会降低代码的可读性。

万物皆对象

每个数字,字符串,数据结构,函数,类,模块等,都被认为是Python对象。每个类型都有类型(例如,字符串或函数)和内部数据

注释

任何前面带有‘#’号的文本都会被Python解释器忽略

# a = 1
# for i in range(10):
b = 2

你可以通过注释的方法排除一段代码但不删除

函数和对象方法调用

可以用圆括号调用函数,传递零个或几个参数,或者将返回值给一个变量

result = f(x, y, z)
g()

几乎Python中的每个对象都有附加的函数,称作方法,可以用来访问对象的内容

obj.some_method(x, y, z) 

obj是对象,some_method是这个对象的方法 函数可以使用位置和关键词参数:

result = f(a, b, c, d=5, e='foo') 

a,b,c是位置参数,d,e是关键字参数

变量和参数传递

在Python中创建变量,你就在等号右边创建了一个对这个变量的引用。

a = [1, 2, 3]

假设将a赋值给一个新变量b:

b = a

我们把4放入a的列表中

a.append(4)

这时候查看一下b,你会发现b也变成了[1, 2, 3, 4]

你可能会疑惑,我明明只往a里放了4,b里怎么也出现了4。其实在Python中,a和b是同一个对象,即原有列表[1, 2, 3]。a和b都引用(绑定)了同一个对象。

对同一对象的双重引用

理解Python的引用含义很重要,知道数据是何时,如何复制的。

当你将对象作为参数传递给函数时,新的局域变量创建了对原始对象的引用,而不是复制。因此可以改变可变参数的内容。假设一个函数:

def append_element(some_list, element):
    some_list.append(element)#将一个元素添加到some_list中
In [1]: data = [1, 2, 3] 

In [2]: append_element(data, 4) 

In [3]: data 
Out[3]: [1, 2, 3, 4] 

如果你会c++的指针或引用,应该很好理解;如果不会的话,你可以这么想,如果你改变了一个变量引用(绑定)的对象,那所有引用(绑定)这个对象的变量都变了,因为他们都指向同一个对象。

动态引用

与许多编译语言(如Java和c++)对比,Python中的对象引用不包含附属的类型。在Python中下面的代码是没有问题的:

In [1]: a = 5

In [2]: type(a)#查看数据类型
Out[2]: int

In [3]: a = 'foo'

In [4]: type(a)
Out[4]: str

属性和方法

Python的对象通常都有属性(存储在对象内部的对象)和方法(可以访问对象内部数据的附属函数)。可以用obj.attribute_name访问属性和方法

引入

在Python中,模块就是有.py扩展名,包含Python代码的文件,假设有一个some_module.py文件

#some_module.py
PI = 3.14159

def f(x):
    return x + 2
    
def g(a, b):
    return a + b

如果想从同目录下的另一个文件访问some_mdule.py中定义的变量和函数:

import some_module
result = some_module.f(5)
pi = some_module.PI

或者:

from some_module import f, g, PI
result = g(5, PI)

使用as关键词,可以给引入起不同的变量名

import some_module as sm
from some_module import PI as pi, g as gf
import pandas as pd

二元运算符和比较运算符

大多数都比较简单,你肯定想的到

可变与不可变对象

Python中大多数对象,比如列表,字典,Numpy数组和用户定义的类型都是可变的。其他的,例如字符串和元组,不可变

a_tuple = (3, 5, (4, 5))#元组

数值类型

数值类型有整形(int)和浮点型(float),浮点型可以用科学计数法表示

fval = 7.243
fval2 = 6.78e-5

除法和C语言不太一样:

3 / 2

会得到1.5,如果是两个斜杠//

3 // 2

则会像c语言一样抛弃小数部分得到1

字符串

Python中的字符串比C语言中简单且灵活许多,可以用单引号或双引号来写字符串(这也和C语言不一样)

a = 'one way of writing a string'
b = "another way"

对于要换行的字符串,可以用三引号

c = """
    This is a longer string 
    that
    spans
    """  

将两个字符串合并会产生新的字符串

In [1]: a = 'I really'

In [2]: b = 'really like'

In [3]: c = 'you'

In [4]: a + b + c
Out[4]: 'I really really like you'

字符串对象有format方法,可以替换参数为字符串

In [1]: '{0:s} 价值 {1:d} rmb'.format('iPhone12', 5000)
Out[1]: 'iPhone12 价值 5000 rmb‘

{0:s}表示第1个参数是字符串,{1:d}表示第2个参数是整数。大致说一下,后面还会遇到。

布尔值

这个也简单,True真和False假

类型转换

str,bool,int和float也可以用来类型转换

In [1]: s = '3.14159'

In [2]: fval = float(a)

In [3]: type(fval)
Out[3]: float

In [4]: int(fval)
Out[4]: 3

In [5]: bool(fval)
Out[5]: True

控制流

if, elif 和 else

if语句检查条件,满足则执行后面语句

if x < 0:
    print('negative)

if后面可以加elif,所有条件不满足最后可以加else

if x < 0:
    print('negative')
elif x == 0:
    print('0')
else:
    print('>0')

for循环

for 循环在一个集合中迭代

sequence = [1, 2, None, 4, None, 5]
for value in sequence:
    if value is None:
        continue

使用continue可以跳过当前迭代的剩下部分,进行下一轮迭代

sequence = [1, 2, None, 4, None, 5]
for value in sequence:
    if value is None:
        break

使用break则会跳出for循环,不仅跳过当前迭代的剩下部分,接下来几轮迭代也跳过了

while循环

while循环指定了条件和代码,当条件为False时退出循环

total = 0
while total > 100:
    total += 1   

pass

意思是什么都不做,代码块不需要任何动作时使用

if x > 0:
    pass

range

range函数返回一个迭代器,产生均匀分布的整数序列

In [1]: list(range(10))
Out[1]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

range三个参数(起点,终点,步伐大小)

In [1]: list(range(0, 20, 2)
Out[1]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

In [2]: list(20, 0, -2)
Out[2]: [20, 18, 16, 14, 12, 10, 8, 6, 4, 2]

三元表达式

Python中的三元表达式可以将if-else语句放到一行里

x = 5
a = 'positive' if x > 0 else 'negative'

!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值