Python基础(数据类型、编码、list、tuple、dict、set)-0
一、数据类型和变量
- 如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识。
- 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义。
- 如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容。
- 空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
- Python是动态语言,变量本身类型不固定。
- 常量通常使用大写字母表示。
- Python中有两种除法,一种是
/
,其计算结果是浮点数,即使两个整数恰好整除,结果也是浮点数;还有一种//
,称为地板除,结果取整数,如果有一方是浮点数,那么结果就是浮点数。%
是取余操作,结果是整数还是浮点数,取决于最后的除数和被除数的类型。以上和C语言有区别。 - 在Python中,可以把任何数据看成是一个对象,然后变量就是在过程中用来指向这些数据对象的。把变量赋值,就是把数据和变量关联起来。
- Python中整数的大小是没有限制的;浮点数的大小也没有限制,超出范围就是inf(无限大)。
二、字符串和编码
- ASCII编码是一个字节,Unicode编码通常是两个字节。
- 本着节约的精神,出现了UTF-8,把Unicode字符根据不同的数字大小编码成1-6个字节。,通常英文是一个字节,汉字是3个字节。
- Python3中字符串是使用Unicode编码,提供ord() 函数获取字符的整数表示,chr() 函数把编码转换为对应的字符。
Python中字符串
- Python中字符串类型是str,如果要网络传输,或保存到磁盘上就需要变为以字节为单位的bytes;Python对于bytes类型数据用带b前缀的单引号或双引号表示。
- 以Unicode表示的str通过encode()方法可以编码为指定的bytes;如果我们从网络或磁盘上读取了字节流,那么读取到的数据就是bytes。要把bytes变为str,就要使用decode()方法。如果bytes中存在一部分的无效字节,可以传入errors='ignore'忽略错误字节。
- 同时str包含多少字节可以使用len()函数。
- 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
申明了UTF-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码:
格式化
- 同C语言一样,使用%来进行格式化,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%。
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
>>> print('%2d-%02d' % (3, 1))
3-01
>>> print('%.2f' % 3.1343)
3.13
>>>
- 另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:
>>> print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.124))
Hello, 小明, 成绩提升了 17.1%
三、列表list和元组tuple
list
- list是一个有序集合-[],可以随时添加和删除其中的元素,可以使用len()函数用来获取其中的个数。
- 索引是从0 开始的。也可以进行-1倒数开始。
- append()用于向list尾部追加元素。
- insert(index, 元素)插入到指定位置。
- pop()用于删除尾部元素。pop(i)为指定索引位置元素被删除。
- 其中list内部元素的数据类型可以不同。也可以包含list
tuple
- 另一种有序列表叫元组tuple-(),和list非常相似,但是一旦初始化就不能够修改。
- 当定义一个tuple时其中的元素就必须被确认下来。
- 也可以定义一个空tuple,t = ()
- 如果定义一个只含一个元素的tuple时,必须在元素后加一个
,
t = (1, )。
四、条件判断和循环
- 只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False
- input()读取用户的输入,但是注意input读取的是str的数据类型,不能直接和整数进行比较。
- Python中只有两种循环:
1. 第一种依次将list或tuple中的每个元素迭代出来。
names = ['a', 'sd', 'sda']
for name in names:
print(name)
提供一个range()函数(前闭后开,从0开始),可以生成一个整数序列,再通过list()函数可以转换为list。
>>> t = range(6)
>>> t
range(0, 6)
>>> t = list(range(6))
>>> t
[0, 1, 2, 3, 4, 5]
>>>
2. 第二种循环是while
sum = 0
n = 99
while n > 0:
sum += n
n = n - 2
print(sum)
- break 和 continue
五、使用dict和set
dict
- dict是Python中内置的字典,其他语言中称为map。
- 避免key不存在的错误,有两种办法,一种是in 判断key是否存在。还有就是通过get()方法,如果不存在返回None,或则自己指定value.
'ruixi' in d
d.get('ruixi')
d.get('ruixi', -1)
- 删除一个key使用pop(key)方法,对应的值也会从dict中删除。
- 有几个特点:查找速度和插入速度极快,不会随着key的增加而变慢;但是需要大量内存,list与之相反。
- key不能使用可变量,list就是。
set
- 和dict类似,也是一组key的集合,但是不存储value。同时key不能重复。key也不能使用可变量。list是可变量。
- 要创建一个set,需要提供一个list作为输入集合。 s = set([1, 2, 3]),不能再tuple中嵌套list
- 使用add(key),添加元素,remove(key),用于移除元素。
>>> a = {'a':(1, 2, 3), 'b':(1, [2, 3])}
>>> a
{'a': (1, 2, 3), 'b': (1, [2, 3])}
>>> a['a']
(1, 2, 3)
>>> a['b']
(1, [2, 3])
>>>
KeyboardInterrupt
>>> a = {(1, 2, 3)}
>>> a
{(1, 2, 3)}
>>> a = {(1, [2, 3])}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> a = set((1, [2, 3]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> a = set((1, 2, 3))
>>> a
{1, 2, 3}
>>> a = set([2, 3])
>>> a
{2, 3}
不变对象
- 所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。
作者:睿晞
身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
曾有一个业界大牛说过这样一段话,送给大家:
“华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.