我敢打赌,这份python入门教程看了绝对有用

简介: 前段时间用Python刷了一些题,把刷题的过程遇到的一些小知识点总结了一下,都是一些比较基础的知识点,特别适合一些刚入门的新手看~ lambda表达式 lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

前段时间用Python刷了一些题,把刷题的过程遇到的一些小知识点总结了一下,都是一些比较基础的知识点,特别适合一些刚入门的新手看lambda表达式

  • lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。它只是一个表达式,函数体比def简单很多。

  • 3个数求和的例子:

>>>f = lambda x,y,z:x+y+z 
>>>f(1,2,3) 
>>>6
而如何要用正常函数实现上述功能的话,需要先用 def 定义函数名,代码如下:
>>>def f(x,y,z):
>>>     return x+y+z 
>>>n = f(1,2,3) 
>>>6
filter()、map()和reduce()函数的区别
  • filter()函数

包括两个参数,分别是function和list。该函数根据function参数返回的结果是否为真来过滤list参数中的项,最后返回一个新列表,如下例所示:
>>>a=[1,2,3,4,5,6,7] 
>>>b=filter(lambda x:x>5, a) 
>>print b 
>>>[6,7]
如果filter参数值为None,就使用identity()函数,list参数中所有为假的元素都将被删除。如下所示:
>>>a=[0,1,2,3,4,5,6,7]
b=filter(None, a)
>>>print b
>>>[1,2,3,4,5,6,7]
  • map()函数

  • map()的两个参数一个是函数名,另一个是列表或元组。

>>>map(lambda x:x+3, a) #这里的a同上 
>>>[3,4,5,6,7,8,9,10]  #另一个例子 
>>>a=[1,2,3] >>>b=[4,5,6] 
>>>map(lambda x,y:x+y, a,b) 
>>>[5,7,9]
在刷题的过程中,map()函数通常可以结合输入一起使用,例如在一行中输入3个整数,可用如下语句:
a,b,c = map(int, input().split())
  • reduce()函数

  • reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

  • 例如,编写一个f函数,接收x和y,返回x和y的和:

def f(x, y):
    return x + y
  • 调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

  1. 先计算头两个元素:f(1, 3),结果为4;

  2. 再把结果和第3个元素计算:f(4, 5),结果为9;

  3. 再把结果和第4个元素计算:f(9, 7),结果为16;

  4. 再把结果和第5个元素计算:f(16, 9),结果为25;

  5. 由于没有更多的元素了,计算结束,返回结果25。

range() 函数用法

  • range() 函数可创建一个整数列表,一般用在 for 循环中。语法如下:
    range(start, stop, step)

  • 实例:

>>>range(10)        # 从 0 开始到 10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> range(1, 11)     # 从 1 开始到 11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
>>> range(0, 30, 5)  # 步长为 5 [0, 5, 10, 15, 20, 25] 
>>> range(0, 10, 3)  # 步长为 3 [0, 3, 6, 9] 
>>> range(0, -10, -1) # 负数 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] 
>>> range(0) [] 
>>> range(1, 0) []
range 在 for 中的使用:
for i in range(n):      # 正序遍历,表示i的取值从0到n-1 
for i in range(n,0,-1): # 倒序遍历,表示i的取值从n到1

dict字典

  • dict字典使用键-值(key-value)存储,具有极快的查找速度。在Java中也称为map。

  • 举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:

names = ['Michael', 'Bob', 'Tracy'] 
scores = [95, 75, 85]
  • 给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。

  • 如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} 
>>> d['Michael'] 95
我在刷题的时候,遇到一个问题就是需要在循环中动态往dict添加数据,但是没有找到添加的函数,其实不用插入函数,循环中动态往dict添加数据也很简单,如下所示:
dt = {}  #先定义一个字典,注意是{},如果定义数组是[] 
for i in range(n):     
    dt[key[i]] = value[i]

sort与sorted的排序问题

  • sort参数说明

L.sort(cmp=None, key=None, reverse=False)
sorted参数说明
sorted(iterable, cmp=None, key=None, reverse=False)
    • iterable:是可迭代类型,通常为一个集合;

    • cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;

    • key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;

    • reverse:排序规则. reverse = True 表示降序 或者 reverse = False 表示升序,默认值为False。

  • 使用sort()方法对list排序会修改list本身,不会返回新list,使用方法如下:

my_list = [3, 5, 1, 4, 2] 
my_list.sort()     
print my_list  
#输出: 
[1, 2, 3, 4, 5]
而使用sorted()方法排序时会返回一个新的list:
my_list = [3, 5, 1, 4, 2] 
result = sorted(my_list)   #返回一个新的list 
print result  
#输出: 
[1, 2, 3, 4, 5]

常用的一些零散的小知识

  • 求实数的多少次幂

  • 正常在java和C语言中,求一个数的幂需要调用一个求幂的函数,但是Python中直接一个运算符就可以搞定了:

#Python求幂 
10**2  #10的平方 
10**4  #10的4次方
  • print(‘xx’,end=’’)中end问题

  • end是print()函数的一个参数。end 是输出语句结束以后附加的字符串,它的默认值是换行(’\n’)。如果输出的时候不需要换行需要显示的给end赋值。

  • 例如输出一个数组,每个数之间以空格隔开,可以用如下语句:

for i in range(n):
     print(data[i],end=' ')  #end值为空格
  • 如果只是单纯的想要输出不换行,可以令end='',end值为空字符串

  • // 与 / 的区别

  • “ / “ 表示浮点数除法,返回浮点结果;

  • “ // “ 表示整数除法,返回不大于结果的一个最大的整数

  • 【code】

print("6 // 4 = " + str(6 // 4)) 
print("6 / 4 =" + str(6 / 4))
【result】
6 // 4 = 1 
6 / 4 =1.5
  • 记得用set去除重复元素

  • 如果一个数组中有很多重复元素,根据需求需要去除重复元素的话,可以使用set集合,类似于Java的HashSet。

  • 语法很简单,只需一行代码就可以去重,如下所示:

  • 【code】

a = [1,1,2,2,3,4,5] 
a = set(a) print(a)
【result】
{1, 2, 3, 4, 5}
原文发布时间为:2018-09-13
本文作者:     厂长
本文来自云栖社区合作伙伴     轮子工厂 ,了解相关信息可以关注“     轮子工厂 ”。

相关文章
|
10月前
|
JSON C语言 C++
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
132 1
|
6月前
|
Java Python
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
【9月更文挑战第18天】在 Python 中,虽无明确的 `interface` 关键字,但可通过约定实现类似功能。接口主要规定了需实现的方法,不提供具体实现。抽象基类(ABC)则通过 `@abstractmethod` 装饰器定义抽象方法,子类必须实现这些方法。使用抽象基类可使继承结构更清晰、规范,并确保子类遵循指定的方法实现。然而,其使用应根据实际需求决定,避免过度设计导致代码复杂。
|
6月前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
7月前
|
安全 Linux Python
Python强大的信号库-blinker 入门教程
Python强大的信号库-blinker 入门教程
92 0
|
7月前
|
Python
Python中的装饰器入门教程
【8月更文挑战第28天】在Python的世界里,装饰器是那些让代码更加简洁、功能更强大的神奇工具。它们就像是给函数穿上了一件华丽的外衣,让函数在执行前后拥有更多的可能性。本文将带你了解装饰器的概念、用法和如何自己动手编写一个装饰器。准备好了吗?让我们一起揭开装饰器的神秘面纱!
|
8月前
|
网络协议 关系型数据库 数据挖掘
python小白快速入门教程
Python是一种解释型、面向对象、动态数据类型的高级编程语言。
79 1
|
9月前
|
数据采集 Python
半小时速通Python爬虫!GitHub开源的Python爬虫入门教程
今天给小伙伴们带来了一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者。 小伙伴们只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会编写简单的 Python 爬虫。
|
9月前
|
数据采集 Python
半小时速通Python爬虫!GitHub开源的Python爬虫入门教程
今天给小伙伴们带来了一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者。 小伙伴们只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会编写简单的 Python 爬虫。
|
9月前
|
数据采集 机器学习/深度学习 运维
超全!GitHub星标6500的Python入门教程大全,太强了!
Python 类库(模块)极其丰富,这使得 Python 几乎无所不能,不管是传统的 Web 开发、PC 软件开发、Linux 运维,还是当下火热的机器学习、大数据分析、网络爬虫,Python 都能胜任。 今天给小伙伴们分享的这份Python入门教程大全是从gitee上扒下来的,这套教程不是教科书,不会玩弄概念,而是力求口语化和通俗化,让读者尽快入门。
|
10月前
|
开发工具 数据库 git
通俗易懂!看漫画学Python入门教程(全彩版)Git首发破万Star
很多编程语言书读起来都略显晦涩,让不少读者望而却步,很难坚持读完。关老师的新书另辟蹊径,以漫画形式切入,生动有趣,把复杂的技术点和编程知识讲解得通俗易懂真正体现了一图胜干言的道理。而且每章结束时都有“练一练”环节,能够帮助读者夯实基础、锻炼技能。不得不说,这是一本Python入门和进阶佳作。
通俗易懂!看漫画学Python入门教程(全彩版)Git首发破万Star