python学习(2)基本语法

简介:

——Python的设计哲学是“优雅”、“明确”、“简单”

推荐的IDEpycharm        python版本2.7

 

1.数据类型:

1整数、浮点数C++一样,其运算也是一样。

2字符串“”’’括起来的文本,对特殊字符,可以用 \ 进行转义。可以用 r'...' r'''...'''转义多个特殊字符,后者对段落有效。以Unicode表示的字符串用 u'...' 表示,不加u中文不能正常显示。同样有u'''...''',甚至组合为ur'''...'''

 

可以在第一行添加注释 

# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码。

 

3布尔值:用TrueFalse表示(注意大小写),可以用andornot运算。

 

Python0、空字符串''None看成 False,其他数值和非空字符串都看成 True

 

(4)空值None

(5)List一种有序的集合,可以随时添加和删除其中的元素。构造很简单,直接用 [ ] 就可以了,里面的元素也不要求类型相同,超级自由的,像这样:

 my_list = ['you', True, 233]

或是这样

 empty_list = []

我们可以直接用print就把整个list打印出来,超级方便!

而且还可以用下标访问,跟数组一样:L[1],倒序访问也可以!!!L[-1]我的天呐!

插入:有两种方法:L.append(元素)追加元素到末尾,L.insert(0,元素)插入元素到0位置,其他元素顺势往后移。

删除:L.pop(),删掉最后一个,L.pop(2)删掉位置2的元素。

替换:L[0]=元素,直接替换0位置的元素。

(6)tuple(元组):一旦创建就不能修改。创建方式是这样的:

t = ('元素1', '元素2', '元素3') 或是 t=(元素,)——单元素tuple需要避免歧义。

tuple里面嵌套list也是可以的:

t = ('a', 'b', ['A', 'B'])

7dict表示映射关系的字典,用 {} 表示,花括号里是keyvalue这样的对应关系。

lend)可以用来求字典的大小。要注意key是不可变得类型,如字符串、整数、浮点数。

访问dict里面的元素:d[key],但要知道这个key值是否存在,避免发生错误。判断方法如下:

1. if key in d:

2. d.get(key),存在返回value,不存在返回None

d[key]=value语句可以用于添加新的映射,也可以用于修改原来的映射。

(8)setset里面的元素不会有重复,而且是无序的。创建 set 的方式是调用 set() 并传入一个 listlist的元素将作为set的元素。

 s = set(['元素1', '元素2', '元素3'])

in操作符判断一个元素是否在set中。

s.add(元素)s.remove(元素)可以用于在set中添加和删除元素。删除时需注意判断元素是否在set中,否则会报错。

 

 

2.变量:

变量的命名规则:大小写英文、数字和下划线(_)的组合,且不能用数字开头。

python是动态语言,变量本身的类型是不固定的!

 

3.输出:

print语句,可以连多个字符串,用“”隔开,在输出中会显示为空格

 

4.注释:

以 开头,至行尾都是注释

 

 

5.条件判断与循环:

Python代码的缩进规则:具有相同缩进的代码被视为代码块。缩进据说用4个空格比较好。

 

1if语句:

if+表达式+

 

(2)if-else语句:

if+表达式+

else

 

(3)if-elif-else语句:

if+表达式+

elif+表达式+

else

 

(4)for循环:

可以用来遍历listtupledictset里的元素:

L = ['Adam', 'Lisa', 'Bart']

for name in L:

    print name

 

5while循环:

While+表达式+

 

(6)break跳出循环:

再循环中可以使用break跳出循环。

 

(7)continue跳出本次循环,继续以后的循环:

 

 

6.函数

调用:方法和C++一样,像:abs(-1)cmp(x,y)int(123)str(123)。(后两个为类型转换),zip()函数可以把两个list变成一个list

>>> zip([10, 20, 30], ['A', 'B', 'C'])

[(10, 'A'), (20, 'B'), (30, 'C')]

编写:用def语句,后接函数名、括号、参数和冒号,再编写函数体,里面可以包含return语句,当然也可以没有,这时会返回None

注意python的函数是可以返回多个值的,实际上这里返回的是一个tuple。像下面这段代码:

import math

def move(x, y, step, angle):

    nx = x + step * math.cos(angle)

    ny = y - step * math.sin(angle)

    return nx, ny

递归函数默认参数C++的差不多。

可变参数:参数名前面加一个*,就可以传入0个、1个或多个参数。其实这里也是一个tuple。看下面求平均值的一段代码:

def average(*args):

    ave=0.0

    ji=0.0

    for i in args:

        ji=ji+1

        ave+=i

    if ji!=0:

        ave=ave/ji    

    return ave  

 

print average()

print average(1, 2)

print average(1, 2, 2, 3, 4)

关键字参数:允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

def person(name, age, **kw):

print 'name:', name, 'age:', age, 'other:', kw

>>> person(Mike, 20)

name: Mike age: 20 other: {}

>>> person('Sam', 15, city=Guangdong)

name: Sam age: 15 other: {'city': Guangdong}

>>> person(Allen, 45, gender='M', job='Player')

name: Allen age: 45 other: {'gender': 'M', 'job': Player}

 

7.切片(Slice

,可以对listtuple甚至字符串进行切片,看下面几个例子就明白了:

L[0:3]:表示从0开始的3个元素

L[:3]:表示从0开始的3个元素

L[:]:表示从头到尾

L[::2]:第三个参数表示每两个元素取一个

倒序也是可以的!L[-2:]:表示从倒数第二个到末尾的元素

 

8.特殊的遍历

1enumerate() 函数,可以在循环中同时绑定元素下标和元素,实际上是把元素下标和元素组成tuple中的映射。

看下面代码:

>>> L = ['A', 'B', 'C', 'D']

>>> for index, name in enumerate(L):

...     print index, '-', name

... 

0 - A

1 - B

2 - C

3 - D

(2)dict的遍历:

1.直接遍历时遍历的是dictkey,像下面的代码:

for key in d:

print key+':',d[key]

2.若想要遍历value,方法有两种:

一种是用values()方法:

for v in d.values():

print v

另一种是用 itervalues() 方法(更省内存):

for v in d.itervalues():

print v

3.同时遍历,我们有时需要同时遍历dictkeyvalue,我们有items()方法和iteritems()方法,后者不占用额外的内存。看下面的代码:

>>> for key, value in d.items():

   print key, ':', value

 

 

9.生成列表

列表生成式可以用简洁的代码生成list。代码例子像下面这样:

>>> [x * x for x in range(1, 11) if x % 2 == 0]

[4, 16, 36, 64, 100]

当然多层嵌套也是可以的:

>>> [m + n for m in 'ABC' for n in '123']

['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

 

10.生成器

当然有些时候我们只需要按一定规则生成的元素,而不需要把所有元素列出一个list。这个时候我们就可以用生成器(generator

我们用 () 创建,像这样: g = (x * x for x in range(10)),我们可以一直用next()方法调用生成的元素,当然用一个for循环会显得理智得多。

当函数返回结果用yield语句时,它其实也是一个生成器。


写文章的时候刚刚接到消息,小李子拿奥斯卡了,嗷嗷~,小李子你不是一个人在拿奖


目录
相关文章
|
24天前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
43 3
|
4天前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
6天前
|
存储 索引 Python
Python学习的自我理解和想法(6)
这是我在B站千锋教育学习Python的第6天笔记,主要学习了字典的使用方法,包括字典的基本概念、访问、修改、添加、删除元素,以及获取字典信息、遍历字典和合并字典等内容。开学后时间有限,内容较为简略,敬请谅解。
|
10天前
|
存储 程序员 Python
Python学习的自我理解和想法(2)
今日学习Python第二天,重点掌握字符串操作。内容涵盖字符串介绍、切片、长度统计、子串计数、大小写转换及查找位置等。通过B站黑马程序员课程跟随老师实践,非原创代码,旨在巩固基础知识与技能。
|
9天前
|
程序员 Python
Python学习的自我理解和想法(3)
这是学习Python第三天的内容总结,主要围绕字符串操作展开,包括字符串的提取、分割、合并、替换、判断、编码及格式化输出等,通过B站黑马程序员课程跟随老师实践,非原创代码。
|
6天前
|
Python
Python学习的自我理解和想法(7)
学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码! 今天是学Python的第七天,学的内容是集合。开学了,时间不多,写得不多,见谅。
|
5天前
|
存储 安全 索引
Python学习的自我理解和想法(8)
这是我在B站千锋教育学习Python的第8天,主要内容是元组。元组是一种不可变的序列数据类型,用于存储一组有序的元素。本文介绍了元组的基本操作,包括创建、访问、合并、切片、遍历等,并总结了元组的主要特点,如不可变性、有序性和可作为字典的键。由于开学时间紧张,内容较为简略,望见谅。
|
6天前
|
存储 索引 Python
Python学习的自我理解和想法(4)
今天是学习Python的第四天,主要学习了列表。列表是一种可变序列类型,可以存储任意类型的元素,支持索引和切片操作,并且有丰富的内置方法。主要内容包括列表的入门、关键要点、遍历、合并、判断元素是否存在、切片、添加和删除元素等。通过这些知识点,可以更好地理解和应用列表这一强大的数据结构。
|
6天前
|
索引 Python
Python学习的自我理解和想法(5)
这是我在B站千锋教育学习Python的第五天笔记,主要内容包括列表的操作,如排序(`sort()`、``sorted()``)、翻转(`reverse()`)、获取长度(`len()`)、最大最小值(`max()`、``min()``)、索引(`index()`)、嵌套列表和列表生成(`range`、列表生成式)。通过这些操作,可以更高效地处理数据。希望对大家有所帮助!
|
12天前
|
安全 程序员 Python
Python学习的自我理解和想法(1)
本篇博客记录了作者跟随B站“黑马程序员”课程学习Python的第一天心得,涵盖了`print()`、`input()`、`if...else`语句、三目运算符以及`for`和`while`循环的基础知识。通过实际编写代码,作者逐步理解并掌握了这些基本概念,为后续深入学习打下了良好基础。文中还特别强调了循环语句的重要性及其应用技巧。
下一篇
DataWorks