前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 入门笔记

Python 入门笔记

作者头像
zucchiniy
发布2019-10-30 21:17:14
6140
发布2019-10-30 21:17:14
举报
文章被收录于专栏:洞明学问洞明学问

Python 入门非常简单,但是对于 Python 的基础知识确也有许多非常重要的内容,为了入门,我决定重新学习一遍 Python。首先从网上的课程开始。

raw

当一个字符串有有需要转义的词的时候,需要用 \ 将内容转义,但是如果一个字符串中有太多需要转义的内容的话,就可以使用 raw 标识这个字符串,用来减少 转义的次数。

代码语言:javascript
复制
r'\(-_-)/ \(-_-)/'

对于多行的字符串,可以使用 \n , 也可以使用 ''' 将多行字符串进行表示。即:

代码语言:javascript
复制
'''Python is created by
Guido.
Test'''

对于 Python 中使用中文,可以使用 u'' 的形式进行调整,也可以使用 # -*- coding: utf-8 -*- ,这样的话,整个文件都是使用的 utf-8 进行编译,就不会有问题了。

List

对于 Python 中的 List ,如果想要将数据插入到队尾,要叫使用 append() 方法,如果想插入到一个非队尾的位置,可以使用 insert(position, value) 的方法将数据插入。

代码语言:javascript
复制
L = [1,2,5,6]
L.append(7)
print(L)
L.insert(3, 88)
print(L)
代码语言:javascript
复制
[1, 2, 5, 6, 7]
[1, 2, 5, 88, 6, 7]

而在删除元素的时候,则使用 pop() 方法,而且在移除元素的同时,还会将数据打印出来。

代码语言:javascript
复制
L = [1,2,5,6]
L.append(7)
L.insert(3, 88)
print(L)
L.pop()
print(L)
代码语言:javascript
复制
[1, 2, 5, 88, 6, 7]
[1, 2, 5, 88, 6]

tuple

创建 tuple 的时候,需要使用 () 来创建,但是 () 本身也是运算符,所以在创建包含一个元素的 tuple 时候,不能简单的使用 t = (1) 这种方案,而是应该使用 t = (1,) 这种形式来创建。

set

set 持有一系列没有重复的元素,而且是无序的,就像是 dict 的 key 一样。 set 的创建方式是调用 set() 并向其中传一个个 list

小测试的思考

针对下面的set,给定一个list,对list中的每一个元素,如果在set中,就将其删除,如果不在set中,就添加进去。

s = set([‘Adam’, ‘Lisa’, ‘Paul’])

L = [‘Adam’, ‘Lisa’, ‘Bart’, ‘Paul’]

代码语言:javascript
复制
s = set(['Adam', 'Lisa', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for x in L:
    if x in s:
        s.remove(x)
    else:
        s.add(x)
print(s)
代码语言:javascript
复制
set(['Bart'])

思考:如果我们认为 s 和 L 是两个同类型的集合,最后做的操作就是找到 仅存在于 L 或者是 仅存在于 s 中的数据。也就是两个集合的差集的合集。

代码语言:javascript
复制
s = set(['Adam', 'Lisa', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
m = set(L)
a = s - m
b = m - s
c = a | b
print(c)
代码语言:javascript
复制
set(['Bart'])

这里需要补充一下,对于 set ,a & b 是指的 a 和 b 的交集,a | b 指的 ab 的合集,a - b 和 b - a 都是指的差集,如果是 a - b 则指的是在 a 中存在,但是在 b 中不存在的数据。

递归思想

汉诺塔 (http://baike.baidu.com/view/191666.htm) 的移动也可以看做是递归函数。

我们对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为:

如果a只有一个圆盘,可以直接移动到c;

如果a有N个圆盘,可以看成a有1个圆盘(底盘) + (N-1)个圆盘,首先需要把 (N-1) 个圆盘移动到 b,然后,将 a的最后一个圆盘移动到c,再将b的(N-1)个圆盘移动到c。

请编写一个函数,给定输入 n, a, b, c,打印出移动的步骤:

move(n, a, b, c)

例如,输入 move(2, ‘A’, ‘B’, ‘C’),打印出:

A –> B A –> C B –> C

代码语言:javascript
复制
#-*- coding:utf-8 -*-
# a借b,移c
def move(n, a, b, c):
    if n == 1:
        print a, '-->', c
        return
    # a 借 c 移到 b
    move(n-1, a,c,b)
    # 最后一个移动到 c
    print a, '-->', c
    # b 借 a 移动到 c
    move(n-1, b,a,c)

move(4, 'A', 'B', 'C')
代码语言:javascript
复制
A --> B
A --> C
B --> C
A --> B
C --> A
C --> B
A --> B
A --> C
B --> C
B --> A
C --> A
B --> C
A --> B
A --> C
B --> C

递归思想是非常重要的一种编程思想,在实现过程中,将一个过程拆分成单独的一步,将其中想同的点设计成递归循环,将不同的设计成不同的分支判断,经过这个测试,我的递归思想非常的弱,希望可以着重的做一些递归实现的问题,用来提高自己的代码水平。

默认参数

默认参数的使用是为了简化函数的调用,可以将常用的数据做为默认值,同时又可以在需要的时候,用传入的参数覆盖掉默认值。

由于参数的顺序要按从左到右的顺序读,所以默认值只能定义在必须的参数右面。

可变参数

Python 可以支持接受任意个参数的数量,传入的时候使用 def f(*args): ,这样可以在传入之后,当做一个 tuple 去处理变量。

迭代

Python 的迭代可以用在任何可以迭代的内容上,包括 list ,tuple,等。迭代永远取出元素本身,而不是元素的索引。

如果想取出元素的索引,可以使用 enumerate() 函数,例如:

代码语言:javascript
复制
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index , value in enumerate(L):
    print index , '-', value
代码语言:javascript
复制
0 - Adam
1 - Lisa
2 - Bart
3 - Paul

迭代 dict 中的值

在 Python 中,迭代 dict 时默认迭代的是其中的 Key 的值,当我们需要使用对应的 value 的值的时候,可以使用 dict.values() 的方法获取所有的 value 值,也可以使用 dict.itervalues() 方法来迭代。

同样在迭代所有元素的时候,希望可以迭代整个对象,可以使用 items() 方法或者使用 iteritems() 方法来获取对象。

条件过滤

[x.upper() for x in L if isinstance(x, str)] 是用来判断每个在 L 中的内容是否是字符串。

利用这种方式,可以将许多方法简化成一个表达式。 其中 ininstance(x,str) 方法可以判断变量 x 是否是字符串。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • raw
  • List
  • tuple
  • set
    • 小测试的思考
    • 递归思想
    • 默认参数
    • 可变参数
    • 迭代
    • 迭代 dict 中的值
    • 条件过滤
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档