热门标签 | 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


推荐阅读
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社区 版权所有