热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python初学者入门指南:从基础到实践的全面学习路径

Python初学者入门指南:从基础到实践的全面学习路径本文为Python初学者提供了一条从基础到实践的全面学习路径。特别介绍了Python字典(Dictionary)中的`items()`方法,该方法用于返回字典中所有键值对的视图对象,便于在循环和其他操作中使用。通过实例讲解,帮助读者更好地理解和应用这一重要功能。

Python学习笔记(持续更新)


5.Python 字典(Dictionary) items()方法

Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。

items()方法语法:dict.items()

详解:https://www.runoob.com/python3/python3-att-dictionary-items.html>


6.python中enumerate用法

enumerate参数为可遍历/可迭代的对象(如列表、字符串)
enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用

chars = {'我': 16, '他': 17, '你': 18}
xChars = {i: j for i, j in enumerate(chars)}
print(xChars)

输出:{0: ‘我’, 1: ‘他’, 2: ‘你’} 可以指定开始的索引值(如:i+3,默认0开始或者enumerate(chars,3))


7.python中的zip()函数用法

zip(Iterables)函数的对象Iterables,iterables可以有多个参数(元组,列表等可迭代对象)组成。通过zip()函数返回一组元组数据,每个元组中的第i个元素对应每个Iterables参数中的第i个元素。如果iterables的参数如果元素个数不同,则只返回元组的个数等于所有参数中元素最小的个数。

示例:

a = [1, 2, 3]
b = [7, 8, 9, 10]
zipped = list(zip(a, b))
print(zipped)
print(list(zip(*zipped))) # zip(*)与zip()相反,可理解为解压,为zip的逆过程,可用于矩阵的转置

输出:

[(1, 7), (2, 8), (3, 9)]
[(1, 2, 3), (7, 8, 9)]

8.python 字典(Dictionary) 的get()方法

Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。

get()方法语法:

dict.get(key, default=None)

如:{‘age’:18, ‘name’:‘python’},key=age,存在则返回18,不存在返回none(可以设置为别的)。

也可以使用get()来统计一组数据不同值的个数,如

lis = [1, 0, 1, 2, 1, 2, 0, 1]
dic = {}
for values in lis:dic[values] = dic.get(values, 0) + 1
print(dic)

{1: 4, 0: 2, 2: 2}

get()返回dic[values]的值(这里指的个数),如果第一次访问(即不存在),返回0,否则返回对应的个数,并在此基础上加一。


9.python中*args 和**kwargs的用法

当函数的参数不确定时,可以使用*args和**kwargs,*args 没有key值,**kwargs有key值。

def fun(x, *args, **kwargs):"""注意调用顺序(传入的顺序不能乱,对应于args,和kwargs)"""print("x = ", x)print("args = ", args)print("kwargs = ", kwargs) # 以字典格式存放了所有的参数fun(1,2,3,x1=1, x2=2, x3=3) # x=1, args=(2,3), kwargs={"x1": 1, "x2": 2, "x3": 3}

输出:

x = 1
args = (2, 3)
kwargs = {'x1': 1, 'x2': 2, 'x3': 3}

10.python中的super()函数用法

Python 3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx,Class是super所在的类名,xxx是函数名。

首先找到Class的父类(比如是类A),然后把类Class的对象转换为类A的对象,然后“被转换”的类A对象调用自己的xxx函数(类A的)。

class FooParent(object):def __init__(self):self.parent = 'I\'m the parent.'print ('Parent')def bar(self,message):print ("%s from Parent" % message)class FooChild(FooParent):def __init__(self):# super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),然后把类 FooChild 的对象转换为类 FooParent 的对象super(FooChild,self).__init__() print ('Child')def bar(self,message):super(FooChild, self).bar(message)print (self.parent) ####if __name__ == '__main__':fooChild = FooChild()fooChild.bar('HelloWorld')

输出:

Parent
Child
HelloWorld from Parent
I'm the parent.

10.详解numpy的argmax()

argmax(test,axis)返回是test元素中最大值的索引,axis = 1是取行的最大值的索引,0是列的最大值的索引,如果是多维数组但是没有加axis如argmax(test)则把多维数组当成一维数组处理,按顺序找出最大值索引。

详解:https://blog.csdn.net/weixin_38145317/article/details/79650188


11.python的 .split()用法

split()默认元素的空格(分隔),也可以在()中指定删除的符号

"This is a test string from Andrew".split()
['This', 'is', 'a', 'test', 'string', 'from', 'Andrew']

12.详解numpy的argsort()

argsort函数返回的是数组值从小到大的索引值

import numpy as np
x = np.array([3, 1, 2])
print(np.argsort(x))

[1 2 0]

np.argsort(-x) #按降序排列
x[np.argsort(x)] #通过索引值排序后的数组

二维:

import numpy as np
x = np.array([[0, 3], [2, 2]])
print(np.argsort(x, axis=0)) #axis=0 按列排序 axis=1 按行排序

[[0 1][1 0]]

13.python之切片操作符(Slice)

切片操作符在python中的原型是 :[start:stop:step] ,即:[开始索引:结束索引:步长值]

li = [1,2,3,4,5,6,7]
print li[2:4] #输出[3,4]。从索引2开始取,到索引为4的5为止(不含5)
print li[-1] #输出7,反向取第一个
print li[-1:-5:2] #输出空列表[],从反向第1个向反向第5个取,但步长为2,表示正向相隔二个取值。
print li[-1:-5:-2] #输出[7,5]
print li[1:]
#输出[2,3,4,5,6,7],省略终止索引,表示取起始索引之后的所有值,等效于li[1:len(li)]
print li[:3]
#输出[1,2,3],省略起始索引,表示从0开始取,等效于li[0:3]
print li[:]
#输出[1,2,3,4,5,6,7],省略起始索引、终止索引、步长值表示取全部,等效于li[0:len(li):1]
print li[::]
#输出[1,2,3,4,5,6,7],省略起始索引、终止索引、步长值表示取全部,等效于li[0:len(li):1]
print li[::-1]
#输出[7,6,5,4,3,2,1],省略起始索引、终止索引,步长值为-1,表示反向获取

14.python的date()和weekday()的简单用法

from datetime import date
a = date(2018,9,12) # a就为2018-9-12
a.weekday() #结果是当天星期几,输出为2,因为0表示星期一
#因为0~6表示星期一到星期日,所以为了和现实表示一样的话,则在后面+1即可
a.weekday()+1 #结果为3,即当天星期三

15.python的replace()的用法

replace()方法语法:

str.replace(old, new[, max])

  • old – 将被替换的子字符串。
  • new – 新字符串,用于替换old子字符串。
  • max – 可选字符串, 替换不超过 max 次

str = "this is string example....wow!!! this is really string"
print str.replace("is", "was")
print str.replace("is", "was", 3)

16python的pd.get_dummies()详解

pandas.get_dummies(data, prefix=None, prefix_sep=’_’, dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)[source]


  1. data:可以是数组类型,Series类型,DataFrame类型

  2. prefix:可以字符串,字符串列表,或字符串的字典类型,默认为None。将data的列名映射到prefix的字符串或者字典;

  3. drop_first:布尔型,默认为False,指是否删除第一列

import pandas as pd
import numpy as nps=pd.Series(list('abca'))
s0=pd.get_dummies(s)
print(s)
print(s0)
'''
0 a
1 b
2 c
3 a
dtype: objecta b c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
'''
s1=['a','b',np.nan]
print(s1)
print(pd.get_dummies(s1))
print(pd.get_dummies(s1,dummy_na=True))
'''
['a', 'b', nan]a b
0 1 0
1 0 1
2 0 0a b NaN
0 1 0 0
1 0 1 0
2 0 0 1
'''
df=pd.DataFrame({'A':['a','b','a'],'B':['b','a','c'],'C':[1,2,3]})
print(df)
print(pd.get_dummies(df))
print(pd.get_dummies(df,prefix=['col1','col2']))
'''A B C
0 a b 1
1 b a 2
2 a c 3C A_a A_b B_a B_b B_c
0 1 1 0 0 1 0
1 2 0 1 1 0 0
2 3 1 0 0 0 1C col1_a col1_b col2_a col2_b col2_c
0 1 1 0 0 1 0
1 2 0 1 1 0 0
2 3 1 0 0 0 1
'''
print(pd.get_dummies(pd.Series(list('abcaa'))))
print(pd.get_dummies(pd.Series(list('abcaa')),drop_first=True))
'''a b c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
4 1 0 0b c
0 0 0
1 1 0
2 0 1
3 0 0
4 0 0
'''
print(pd.get_dummies(pd.Series(list('abx')),dtype=float))
'''a b x
0 1.0 0.0 0.0
1 0.0 1.0 0.0
2 0.0 0.0 1.0
''

17.python中pandas中Series()和DataFrame()的区别与联系

区别:
series,只是一个一维数据结构,它由index和value组成。
dataframe,是一个二维结构,除了拥有index和value之外,还拥有column。
联系:
dataframe由多个series组成,无论是行还是列,单独拆分出来都是一个series。多个series也可以组合成dataframe

Series:

#Series 它是有索引,如果我们未指定索引,则是以数字自动生成。
obj=Series([4,7,-5,3])
print(obj)
#输出结果如下:
# 0 4
# 1 7
# 2 -5
# 3 3
obj2=Series([4,7,-5,3],index=['d','b','a','c'])
print(obj2)
#输出结果如下:
# d 4
# b 7
# a -5
# c 3
#如果数据被存在一个python字典中,也可以直接通过这个字典来创建Series.
sdata={'Ohio':35000,'Texax':71000,'Oregon':16000,'Utah':5000}
print(Series(sdata))
#输出结果如下:
# Ohio 35000
# Oregon 16000
# Texax 71000
# Utah 5000
#注:如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)

DataFrame相当于有表格,有行表头和列表头:

data = {'Country':['Belgium', 'India', 'Brazil'],'Capital':['Brussels', 'New Delhi', 'Brasilia'],'Population':[11190846, 1303171035, 207847528]}
print(pd.DataFrame(data))
'''Capital Country Population
0 Brussels Belgium 11190846
1 New Delhi India 1303171035
2 Brasilia Brazil 207847528
'''

# 现在可以 构建几个series
s1 = pd.Series(data['Country'])
s2 = pd.Series(data['Capital'])
s3 = pd.Series(data['Population'])
df_new = pd.DataFrame([s1, s2, s3], index=['Country', 'Captital', 'Population'])
print(df_new)
'''0 1 2
Country Belgium India Brazil
Captital Brussels New Delhi Brasilia
Population 11190846 1303171035 207847528可以看到,行 和 列 都是颠倒的,因此需要进行一下转置
'''
print(df_new.T)
'''Country Captital Population
0 Belgium Brussels 11190846
1 India New Delhi 1303171035
2 Brazil Brasilia 207847528'''
'''
总结:series, 就是一个 一维 的数据结构,它是由 index 和 value 组成。dataframe, 是一个 二维 数据结构,它由多个 series 构成。
'''


18.python中的.format() 格式化函数

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {}: 来代替以前的 %

format 函数可以接受不限个参数,位置可以不按顺序。

>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'

eries, 就是一个 一维 的数据结构,它是由 index 和 value 组成。
dataframe, 是一个 二维 数据结构,它由多个 series 构成。
‘’’

## 18.python中的.format() 格式化函数Python2.6 开始,新增了一种格式化字符串的函数 **str.format()**,它增强了字符串格式化的功能。基本语法是通过 **{}** 和 **:** 来代替以前的 **%** 。format 函数可以接受不限个参数,位置可以不按顺序。```python
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'

更多用法和详解:https://blog.csdn.net/jpch89/article/details/84099277


推荐阅读
  • 基于机器学习的人脸识别系统实现
    本文介绍了一种使用机器学习技术构建人脸识别系统的实践案例。通过结合Python编程语言和深度学习框架,详细展示了从数据预处理到模型训练的完整流程,并提供了代码示例。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • 黑马头条项目:Vue 文章详情模块与交互功能实现
    本文详细介绍了如何在黑马头条项目中配置文章详情模块的路由、获取和展示文章详情数据,以及实现关注、点赞、不喜欢和评论功能。通过这些步骤,您可以全面了解如何开发一个完整的前端文章详情页面。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • 本文探讨了如何在 F# Interactive (FSI) 中通过 AddPrinter 和 AddPrintTransformer 方法自定义类型(尤其是集合类型)的输出格式,提供了详细的指南和示例代码。 ... [详细]
  • 本文介绍了如何在 Node.js 中使用 `setDefaultEncoding` 方法为可写流设置默认编码,并提供了详细的语法说明和示例代码。 ... [详细]
  • 使用Nginx反向代理实现多域名端口映射
    本文介绍如何通过配置本地hosts文件和Nginx反向代理,实现多个虚拟域名的端口映射,使用户可以通过标准HTTP端口80访问不同后端服务。 ... [详细]
  • LeetCode 690:计算员工的重要性评分
    在解决LeetCode第690题时,我记录了详细的解题思路和方法。该问题要求根据员工的ID计算其重要性评分,包括直接和间接下属的重要性。本文将深入探讨如何使用哈希表(Map)来高效地实现这一目标。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • Linux环境下C语言实现定时向文件写入当前时间
    本文介绍如何在Linux系统中使用C语言编程,实现在每秒钟向指定文件中写入当前时间戳。通过此示例,读者可以了解基本的文件操作、时间处理以及循环控制。 ... [详细]
  • 本文介绍 Java 中如何使用 Year 类的 atMonth 方法将年份和月份组合成 YearMonth 对象,并提供代码示例。 ... [详细]
author-avatar
同亮uncle_847
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有