Python小推车初学者编程相关

Python知识梳理(一)

2019-03-26  本文已影响18人  暖A暖

Day 1:认识Python

Day 2:Python解释器

Day 3:Python开发工具

Day 4:编写Python第一个程序和官方文档介绍

缩进:Python中,四个字符为一个缩进,和其他编程语言如:Java、PHP、JavaScript相比,Python中没有{ }, 使用缩进替代代码块
续行:Python中,尽量一行把代码写完,需要强制换行并且下一行需要连起来的话,在行的末尾使用
字符转义:使用\加上需要转义的字符,和其他语言Java、PHP、JavaScript类似,如: \, \n, \t: \将\当做普通字符对待
标识符:可以理解为就是直接的文件名、变量名、函数名等的名字命名,规则有:

  1. 只能以字母或下划线开头
  2. 只能是字母、下划线、数字
  3. 不能使用Python中的关键字
  4. 区分大小写

常量:就是保持不变的意思,Python中没有常量,通常使用大写字母表示常量,如INIT_NUM = 1,这样我们就知道这个变量尽量不要去改变它,保持它的不变
变量:我们可以对其赋值,改变它的值,如:height = 1,height变量值为2,height = 2,height变量值变更为2了。

image.png

Day 5 - 12:Python中的8种基本数据类型(内置数据类型)

数值(Number):是不可变数据类型

列表(List):是可变数据类型

lst = list()     初始化空列表
lst = []    初始化空列表
lst = [1,2,3]   初始化非空列表
lst = list(range(10))  初始化非空列表
1.通过索引访问,索引从0开始计算(编程语言的索引大多数都是从0开始),如:lst[1],访问第2个元素

2.通过前后索引获取区间数据:这也叫切片,列表变量[起始索引:结束索引],包含起始索引的值,不包含结束索引的值,就是大于等于起始索引,小于结束索引;
如果起始或者结束索引为空,那么就截取到最前面或者最末尾,如:lst[:3],从索引0开始,截取到不包含索引3的数值;lst[:],截取全部;

3.通过index(传入值)方法,传入值参数可以获取对应值的索引

4.通过count(传入值)方法,传入值参数可以获得对应值在列表中出现的次数

5.通过len(传入列表)方法,传入列表可以获得列表的元素个数,也是就列表长度
通过索引修改,如lst[0] = 100,修改lst列表的索引0的元素值为100

也可以传入区间进行修改,如:lst[1:2]=[11,22],lst[1:2]=[11,22,33,44]
1.可以通过append方法在列表的末尾插入数据,如:lst.append(5)

2.可以通过insert方法在列表的任意位置插入数据,如:lst.insert(0, 100)

3.可以通过extend方法,添加可迭代对象的元素(可迭代可以理解为可循环对象),如:lst.extend(range(10))

4.可以通过 + 将两个列表元素叠加,如:lst_new = lst + [1,2,3]

5.可以通过 * 将列表的元素复制(浅拷贝),如:lst_new = lst * 3
1.可以通过remove方法,传入元素值,从左至右找到第一次匹配的元素删除, 且只会删除一个元素,
如:lst.remove(3),删除元素为3的第一个元素,多个3个,可以使用循环删除

2.可以通过pop方法,弹出指定索引的元素,如果不给定索引,弹出末尾元素,如:lst.pop(2),lst.pop()

3.可以通过clear方法,清空列表所有的元素,如lst.clear()
1.可以通过reverse方法,将列表中的元素反向,如:lst.reverse()  

2.可以通过sort方法,对列表中的元素进行排序, sort(key=None, reverse=False), 
key为排序函数,reverse指定正向排序还是反向排序,如:lst.sort(),lst.sort(reverse=True)

3.in 关键字,可以判断元素是否在列表内部,如:if 1 in lst:print('yes')

4.浅拷贝:copy()方法,复制出来的对象,会跟着原始对象数据变化而变化,如:lst.copy()

5.深拷贝:使用copy模块的deepcopy()方法,copy.deepcopy(lst),复制出来的对象,不会跟着原始对象数据变化

元祖(Tuple):不可变数据类型

与列表也类似,也有不一样的

t = tuple()
t = ()
t = tuple(range(1,10))
t = (1,2,3,4,5)
t = (5) : 这样定义的不是元祖,而是一个数值
t = (5,) :这样才是元祖
1.通过索引访问,索引从0开始计算(编程语言的索引大多数都是从0开始),如:lst[1],访问第2个元素

2.通过前后索引获取区间数据:这也叫切片,列表变量[起始索引:结束索引],包含起始索引的值,不包含结束索引的值,就是大于等于起始索引,小于结束索引;
如果起始或者结束索引为空,那么就截取到最前面或者最末尾,如:lst[:3],从索引0开始,截取到不包含索引3的数值;lst[:],截取全部;

3.通过index(传入值)方法,传入值参数可以获取对应值的索引

4.通过count(传入值)方法,传入值参数可以获得对应值在列表中出现的次数

5.通过len(传入列表)方法,传入列表可以获得列表的元素个数,也是就列表长度
from collections import namedtuple
Point = namedtuple('Point',['x','y'])

使用命名元祖可以在当有多个元祖的时候,我们可以通过元祖的名字来区分某个元祖。

字符串(String):不可变数据类型

使用 '', "", ''' ''' , """ """,如:str = 'xkd',单引号和双引号效果类似,
单引号内可以包含以内容输出双引号,双引号内也可以包含单引号,
如:str = 'x"k"d';三引号用于换行写很长的字符串而不需要转义符

一旦定义后,不可改变,对其字符串变量操作的修改等,都会生成新的字符串变量内存空间
索引访问,如:
string = 'xkd'
string[1]

循环迭代访问,如:
string = 'xkd'
for item in string:
   print(item)
1.转义:使用\加转义字符来转义,如:print('hello\nxkd'),\n转义为换行

2.连接:使用+号或者join()

3.切割:左到右:split()、右到左:rsplit()、按行切割:splitlines()、分段切割:partition()

4.修改:替换:replace()、删除两端空白:strip()、rstrip()、lstrip()

5.查找:find()、index()、count()

6.判断:startswith()、endswith()

7.格式化:format()

8.更多:大小写转换:upper()、lower()、swapcase()、title()、capitalize();
更多请参考文档:[https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str]
(https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str),
字符串方法很多,学会几个常用的做法后,可以先大概过一遍文档里的字符串方法,知道有哪些功能,以后需要用到再翻文档参考即可

集合(Set):可变数据类型,无序

1.可变的,无序列的,不可重复的元素的集合**(重复的元素会被自动去除重复部分)

2.集合元素必须是可以hash类型,也就是必须是hashable,x不可变的数据类型就是可以hashable的

3.所以,数值类型,布尔类型,字符串类型,bytes,元组,None都可以作为集合的元素数据类型
set()
{},使用{}的时候,元素不能为空,否则就是定义字典,空的集合使用set()定义,如:s5 = {9,10,11},
循环迭代读取:由于集合是无序的,无法使用index索引查询,只能迭代

set1 = {1,2,3,4}
for item in set1:
   print(item)
update方法:如old_set.update([1,2,3])
add方法:如:old_set.add(1),添加重复的数据会自动去重的哦
remove方法:删除某个元素,传入元素删除,如:old_set.remove(1)
discard方法:discard与remove的区别在于,如果元素不存在,remove方法会报错,而discard不会,如:old_set.discard(1)
pop方法:随机删除,不能指定索引,一次删除一个,而列表没有传入索引是从后面往前删除的,如:old_set.pop()
clear方法:清除所有,如:old_set.clear()
1.两个集合的并集:union()
2.两个集合的交集:intersection()
3.两个集合的差集:difference()

字典(Dict):可变数据类型,无序

d = dict()    
d = {}  要注意和集合区分哦
d = {'name':'Robby', 'age':27}
d = dict(name='Robby', age=27)
d = dict((('name','Robby'),('age', 27)))
d = dict.fromkeys(range(5), 100)
通过索引key来访问
通过get()方法访问,如下:

d = {'name':'Robby', 'age':27}
print(d['name'])  
print(d.get('nme', None))
update(),指定键和需要修改的值,如:update({'name': 'xkd'}) 
直接把数据赋值给key索引的字典,如:
d = {'name':'Robby', 'age':27}
d['hobby'] = 'Run'
传入键名删除,如:d.pop('name', None)
任意删除键值对,如:d.popitem()  
全部删除,如:d.clear()
del删除,**如:del d['name']
keys():获得所有字典键
遍历:使用for in遍历,如下:

# key的遍历
for key in d:
   print(key)
for key in d.keys():
   print(key)

# value的遍历
for key in d:
   print(d[key])
for key in d.keys():
   print(d.get(key))

# key/value遍历
for item in d.items():
   print(item)
for key,value in d.items():
   print(key, value)
defaultdict:使用基本类型的字典,如果访问一个不存在的key的时候,就会报错,
为了避免报错,我们可以使用collections的defaultdict,这样访问的时候,就不会报错了,并且返回默认值,如:

from collections import defaultdict
dict1 = defaultdict(int) # 默认值是0
print(dict1['name'])

OrderedDict:有序字典,记录key的插入顺序

字节(bytes):不可变类型,有序

Python3新增,用于对二进制数据的处理

1.  与字符串类似,字符串是有编码的,编码不对就出现文字变乱,可以使用utf-8、gbk等编码,这样就避免乱码;
而字节bytes是没有编码的,不会出现乱码,所以,在某些场景下可以使用字节来进行数据传输而确保没有乱码。
在socket通讯中,数据的传输就是使用bytes的;

2.  字符串和字节都可以互相转换,字符串.encode()方法就可以转换为字节,
字节.decode()方法就可以还原为字符串;
bytes()  
bytes(9)
bytes('hello', encoding='utf-8')
bytes('中国', encoding='utf-8') 
decode()
hex()
startswith()
bytes.fromhex()

字节数组(bytearray):可变类型,有序

bytearray('hello', encoding='utf-8')
append(100)
append(99)
insert(1,98)
extend([65,66,67])
remove(66)
pop()
reverse()
clear()
decode()

Day14:时间数据类型

在上一篇文章中,我们梳理了Python中的基本数据类型,也就是Python自带的数据类型,而时间这个数据类型,来自Python的标准库time,所以,需要导入才可以使用。Python需要做时间相关的处理时,我们就使用这个time标准库来实现;

time模块
datetime模块,time模块的增强版,功能更多更强大

来自:https://www.9xkd.com/user/plan.html

上一篇 下一篇

猜你喜欢

热点阅读