数据的输入
输入
Python使用input()函数用于输入数据,该函数返回字符串类型
input(prompt=None,/)
x,y = input(‘输入x,y的值’) {在输入一个参数后回车输入下一个参数}
数据类型的转换
int() 截取数字整数部分,或者是将字符串转换为一个整数,如果不给定参数则返回0
需要注意的是,int()函数不接受带小数的数字字符串,会报ValueError的错误 例子int( ‘45.8’)
进制转化: int(x,base=10) base有限范围0 2-36 eg. int(‘1001001’,2) 将二进制数变为十进制。
float(x=0,/) 将一个数字或者字符串转化为浮点数。
eval(source,globals=None)
将source当做一个python表达式进行解析和计算,返回计算结果。
参数说明:source是一个字符串,这个字符串能表示成Python表达式,或者是能够通过编译的代码;globals是可选的参数,默认 为None,如果设置属性不为None的话,就必须是dictionary对象;locals也是可选的参数,默认为None,如果设置属性不为None 的话,可以是任何map对象。(我对于eval函数的理解是,去除引号,成为去除后的数据类型。)
数据的输出
print(value,...,sep='',end='\n',file=sys.std.out,flush=False)
value: 表示需要输出的对象,一次可以输出一个或者多个对象(其中…表示任意多个对象),当输出多个对象时,对象之间要用逗 号(,)分隔;
sep:表示输出时对象之间的间隔符,默认用一个空格分隔;
end:表示输出以何字符结尾,默认值是换行符;
file:表示输出位置,可将输出到文件,file指定的对象要有“写”的方法,默认值是sys.stdout(标准输出);
flush:将缓存里面的内容是否强制刷新输出,默认值是False。
合法的标识符
在Python中,所有标识符可以包括英文、数字以及下画线,但要符合以下规则:
-
标识符开头必须是字母或下画线;
-
标识符不能以数字开头;
-
标识符是区分大小写的;
-
标识符中不能出现分隔符、标点符号或者运算符;
-
标识符不能使用关键字;
-
最好不要使用内置模块名、类型名、函数名、已经导入的模块名及其成员名作为标识符。
eg. A、ABC、aBc、a1b2、ab_123、__(连续两个下画线)、_123 等,都是合法的标识符。6a2b、abc-123、hello world(中间用了空 格)、for(关键字)等则是非法的标识符。
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
None
这里提一下关键字None。None是一个特殊的Python对象,和False不同,不是0,也不是空字符串、空列表等。None有自己的数据类型NoneType,None和任何其他数据类型进行是否相等比较永远返回False。可以将None赋值给任何变量,但是不能创建其他NoneType对象。
下画线标识符
以下画线开头的标识符是有特殊意义的。
以单下画线开头(_xxx)的标识符代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”导入;
以双下画线开头(__xxx)的标识符代表类的私有成员;
以双下画线开头和结尾(_ _ xxx _ )的标识符代表Python中特殊方法专用的标识,如 _ _ init _ _代表类的构造函数。(Markdown语法特殊)
数据类型
数值型(int float complex) 字符串(str) 布尔(bool) 列表(list) 元组(tuple) 字典(dict)
复数类型 实部加虚部 2+3j
值得一提的是,Python支持任意大的数字,仅受内存大小的限制。
另外,为了提高可读性,在数值中可以使用下画线。
>>> 1_23_456_7890
1234567890
>>> 0x_12_ab_8ff
19577087
>>> 1_23.5_67
123.567
1. 算术运算符
在Python中,算术运算符有:+(加)、-(减)、*(乘)、/(真除法)、//(求整商)、%(取模)、**(幂)。
2. 关系运算符
在Python中,关系运算符有:<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、!=(不等于)。
关系运算符根据表达式值的真假返回布尔值。
3. 测试运算符
在Python中,测试运算符有:in、not in、is、is not。
测试运算符也是根据表达式值的真假返回布尔值。
4. 逻辑运算符
在Python中,逻辑运算符有:and(与)、or(或)、not(非)。通过逻辑运算符可以将任意表达式连接在一起。
*运算符可以用于列表、元组或字符串与整数的相乘,用于将这些序列重复整数所指定的次数。它不适用于字典和集合与整数的相乘。
>>> [1,3,5]*2
[1, 3, 5, 1, 3, 5]
>>> {1801:'Lily'}*2
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
{1801:'Lily'}*2
TypeError: unsupported operand type(s) for *: 'dict' and 'int'
利用关系运算符比较大小首先要保证操作数之间是可比较大小的;另外关系运算符可以连用。
>>> 5<6<8
True
>>> 5<6==8
False
>>> 5<6>3
True
>>>
>>> 3>5
False
>>> 'a'>'A'
True
>>> 'b'<'0'
False
>>> 'abcae'<'abcAb'
False
>>> 'abc'=='abc'
True
>>> 'a'<'我'
True
在Python3中,所有的字符串都是Unicode字符码,可以用ord()获取字符的Unicode,利用chr()函数,把编码换为相应字符串
>>> ord('a')
97
>>> chr(97) #得到对应的字符
'a'
>>> ord('我')
25105
>>> chr(25105)
'我'
在ASCII编码中:
数字的ASCII编码<大写字母的ASCII编码<小写字母的ASCII编码
而在数字当中,数字0比数字9要小,并按0到9顺序递增;在大写字母当中,字母A比字母Z要小,并按A到Z顺序递增;在小写字母当中,字母a比字母z要小,并按a到z顺序递增。
循环控制
while 条件表达式:
循环体
for 变量 in 序列或迭代器等可迭代对象:
循环体
while 条件表达式:
循环体
else:
else语句块
range
Python 3开始,函数range返回可迭代对象。以遍历range函数返回的可迭代对象
range(start,stop[,step])
产生一个从start开始(包括start),到stop结束(不包括stop),两个整数对象之间间隔step的可迭代对象。
参数说明:
start:可迭代对象的开始值为start,默认是从 0 开始。例如range(6)等价于range(0, 6);
end:可迭代对象到end结束,但不包括end。例如:range(0, 6)产生包含0, 1, 2, 3, 4,5的可迭代对象,但没有6;
step:步长,表示所产生的可迭代对象元素之间的间隔,默认为1。例如:range(0, 6)等价于range(0, 6, 1)。步长也可以是负数,这时开始值大于结束值。
常用数据结构
有序列 (列表,元组,字符串) 映射 (字典) 集合(set)
有序列中把大量数据按次序排列而形成的集合体称为序列。Python中的字符串、列表和元组数据类型都是序列。
在Python中,所有序列类型都可以进行某些特定的操作。这些操作包括:索引(indexing)(有顺序就能索引)、分片(slicing)、加(adding)、乘(multiplying)以及检查某个元素是否属于序列的成员。除此之外,Python还有计算序列长度、找出最大元素和最小元素的内建函数。
list
- 列表是Python中最基本的数据结构,是最常用的Python数据类型。
- 列表将由若干数据作为元素的序列放置在一对方括号中,
- 元素之间以逗号分隔。
- Python列表元素可以由任意类型的数据构成。
- 同一列表中各元素的类型可以各不相同。
- 列表中的元素允许重复。
- 此外,Python列表是可以修改的,修改方式包括向列表添加元素、从列表删除元素以及对列表的某个元素进行修改。
#二维列表
>>> computer=[['IBM','Apple','Lenovo'],['America','America','China']]
>>> computer[0][-1]
'Lenovo'
>>> computer[1][2]
'China'
del命令
使用del命令可以从列表中删除元素,也可以删除整个列表。
>>> vehicle = ['train', 'bus', 'car', 'ship']
>>> del vehicle[3]
>>> vehicle #删除了'ship'
['train', 'bus', 'car']
>>> del vehicle[3] #超出索引范围
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
del vehicle[3]
IndexError: list assignment index out of range
>>> del vehicle #删除列表vehicle
>>> vehicle #列表vehicle不存在了
Traceback (most recent call last):
File "<pyshell#82>", line 1, in <module>
vehicle
NameError: name 'vehicle' is not defined
列表运算
列表相加
通过列表相加的方法生成新列表
>>> vehicle1 = ['train', 'bus', 'car', 'ship']
>>> vehicle2 = ['subway', 'bicycle']
>>> vehicle1 + vehicle2
['train', 'bus', 'car', 'ship', 'subway', 'bicycle']
>>> vehicle1 # vehicle1没有改变
['train', 'bus', 'car', 'ship']
>>> vehicle2
['subway', 'bicycle']
>>> vehicle=vehicle1 + vehicle2 # 生成新列表赋值给变量vehicle
>>> vehicle
['train', 'bus', 'car', 'ship', 'subway', 'bicycle']
>>> vehicle+=['bike'] #复合赋值语句
>>> vehicle
['train', 'bus', 'car', 'ship', 'subway', 'bicycle', 'bike']
列表相乘
用数字n乘以一个列表,会生成一个新列表。在新列表中原来列表的元素将被重复n次。
>>> vehicle1 = ['train', 'bus']
>>> vehicle1*2
['train', 'bus', 'train', 'bus']
>>> vehicle1 #原列表保持不变
['train', 'bus']
>>> vehicle=vehicle1*2 #赋值语句
>>> vehicle
['train', 'bus', 'train', 'bus']
>>> vehicle*=2 #复合赋值语句
>>> vehicle
['train', 'bus', 'train', 'bus', 'train', 'bus', 'train', 'bus']
列表中的方法
index(value[,start=0[,stop]])
index()方法用于从列表中找出与value值匹配的第一个元素索引位置。
如果没有指定参数start的值,则从索引为0的位置开始查找,否则从索引为strat的位置开始查找。
如果没有指定结束索引位置stop的值,可以查找到列表最后元素,否则在位于[start, stop)内的索引区间查找。如果找不到匹配项,就会引发异常。
>>> vehicle = ['train', 'bus', 'car', 'subway', 'ship', 'bicycle', 'car']
>>> vehicle.index('car') #整个列表范围内'car'第1次出现的索引位置是2
2
>>> vehicle.index('plane') #整个列表范围内没有'plane'
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
vehicle.index('plane')
ValueError: 'plane' is not in list
>>> vehicle.index('car',3) #在从索引为3开始,'car'第1次出现的索引位置是6
6
>>> vehicle.index('car',3,6) #在从3开始到6(不包含6)的索引范围内没有'car'
Traceback (most recent call last):
File "<pyshell#83>", line 1, in <module>
vehicle.index('car',3,6)
ValueError: 'car' is not in list
count()
count()方法,用于统计某个元素在列表中出现的次数。
>>> vehicle = ['train', 'bus', 'car', 'subway', 'ship', 'bicycle', 'car']
>>> vehicle.count('car')
2
>>> vehicle.count('bus')
1
>>> vehicle.count('bike')
0
append()
append() del() remove() pop() clear()
>>> vehicle = ['train', 'bus', 'car', 'ship']
>>> vehicle.append ('plane') #追加一个元素'plane'
>>> vehicle
['train', 'bus', 'car', 'ship', 'plane']
>>> vehicle.append(8) #追加一个元素8
>>> vehicle
['train', 'bus', 'car', 'ship', 'plane', 8]
extend() 只能是一个列表!
extend()方法,在列表的末尾一次性追加另一个列表中的多个值,可以用新列表扩展原有的列表。
>>> vehicle = ['train', 'bus', 'car', 'ship']
>>> vehicle.extend(['plane'])
>>> vehicle
['train', 'bus', 'car', 'ship', 'plane']
>>> vehicle.extend([8])
>>> vehicle
['train', 'bus', 'car', 'ship', 'plane', 8]
>>> vehicle.extend([8,9])
>>> vehicle
['train', 'bus', 'car', 'ship', 'plane', 8, 8, 9]
>>> vehicle.extend(10,11)
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
vehicle.extend(10,11)
TypeError: extend() takes exactly one argument (2 given)
insert()
insert()方法,将一个元素插入到列表中的指定位置。
列表的insert方法有两个参数,
-
第一个参数是索引点,即插入的位置,
-
第二个参数是插入的元素。
>>> vehicle = ['train', 'bus', 'car', 'ship'] >>> vehicle.insert(3,'plane') >>> vehicle ['train', 'bus', 'car', 'plane', 'ship'] >>> vehicle.insert(0,'plane') >>> vehicle ['plane', 'train', 'bus', 'car', 'plane', 'ship'] >>> vehicle.insert(-2,'bike') >>> vehicle ['plane', 'train', 'bus', 'car', 'bike', 'plane', 'ship']
remove()
remove()方法,用于移除列表中与某值匹配的第一个元素。如果找不到匹配项,就会引发异常。
>>> vehicle = ['train', 'bus', 'car', 'ship', 'subway', 'ship', 'bicycle']
>>> vehicle.remove('ship')
>>> vehicle
['train', 'bus', 'car', 'subway', 'ship', 'bicycle']
>>> vehicle.remove('ship')
>>> vehicle
['train', 'bus', 'car', 'subway', 'bicycle']
>>> vehicle.remove('ship')
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
vehicle.remove('ship')
ValueError: list.remove(x): x not in list
pop()
pop()方法用于移除列表中的一个元素(默认为最后一个元素),并且返回该元素的值。pop()方法可以指定索引位置,当不在索引范围内或者从空列表中使用此方法均会触发异常。
>>> vehicle.pop()
'ship'
>>> vehicle
['train', 'bus', 'car']
>>> vehicle.pop(1)
'bus'
>>> vehicle
['train', 'car']
>>> vehicle.pop(2) #索引超过范围
Traceback (most recent call last):
File "<pyshell#68>", line 1, in <module>
vehicle.pop(2)
IndexError: pop index out of range
>>> vehicle.pop(0)
'train'
>>> vehicle
['car']
>>> vehicle.pop(-1)
'car'
>>> vehicle
[]
>>> vehicle.pop() # vehicle为空列表
Traceback (most recent call last):
File "<pyshell#73>", line 1, in <module>
vehicle.pop()
IndexError: pop from empty list
clear()
clear()方法用于删除列表中所有元素,但保留列表对象。
>>> vehicle = ['train', 'bus', 'car', 'ship']
>>> vehicle.clear()
>>> vehicle # 列表vehicle元素全部删除变成空列表
[]
请注意与del命令的区别,del命令删除整个列表时,列表对象不再保留。
reverse()
reverse()方法,用于将列表中的元素位置反向存放。列表中可以有不同类型的元素,reverse()方法只是将位置反转。
>>> vehicle = ['train', 'bus', 'car', 'subway', 'ship', 'bicycle']
>>> vehicle.reverse()
>>> vehice
['bicycle', 'ship', 'subway', 'car', 'bus', 'train']
>>> nv=[12,'bus',99,'train']
>>> nv.reverse()
>>> nv
['train', 99, 'bus', 12]
sort()
sort()方法,用于将列表中的元素进行排序。默认按升序排列。使用reverse参数来指明列表是否降序排列,参数是简单的布尔值True或False,若其值等于True表示降序排序,默认为False。如果列表中包含的是字符串,按字母串排序规则排序。可以使用key参数。
>>> numbers=[12,34,3.14,99,-10]
>>> numbers.sort()
>>> numbers
[-10, 3.14, 12, 34, 99]
>>> numbers.sort(reverse=True)
>>> numbers
[99, 34, 12, 3.14, -10]
>>> numbers.sort(key=str) #按转换为字符串后的大小升序排列
>>> numbers
[-10, 12, 3.14, 34, 99]
>>> vehicle = ['train', 'bus', 'car', 'subway', 'ship', 'bicycle']
>>> vehicle.sort()
>>> vehicle
['bicycle', 'bus', 'car', 'ship', 'subway', 'train']
>>> vehicle.sort(key=len) #按字符串的长度升序排列
>>> vehicle
['bus', 'car', 'ship', 'train', 'subway', 'bicycle']
>>> vehicle.sort(reverse=True)
>>> vehicle
['train', 'subway', 'ship', 'car', 'bus', 'bicycle']
>>> vehicle.sort(key=len,reverse=True)
>>> vehicle
['bicycle', 'subway', 'train', 'ship', 'car', 'bus']
列表函数
len()函数
len()函数,用于返回列表中所包含元素的个数。
>>> vehicle = ['train', 'bus', 'car', 'subway', 'ship', 'bicycle']
>>> len(vehicle)
6
min() max()
reversed()
>>> vehicle = ['train', 'bus', 'car', 'subway', 'ship', 'bicycle']
>>> reversed(vehicle)
<list_reverseiterator object at 0x0000000002F370B8>
>>> list(reversed(vehicle))
['bicycle', 'ship', 'subway', 'car', 'bus', 'train']
>>> nv=[12,'bus',99,'train']
>>> reversed(nv)
<list_reverseiterator object at 0x0000000002F370B8>
>>> list(reversed(nv))
['train', 99, 'bus', 12]
sorted()函数
sorted()函数,对列表进行排序并返回新列表。例如:
>>> numbers=[12,34,3.14,99,-10]
>>> n1=sorted(numbers) #新列表
>>> n1
[-10, 3.14, 12, 34, 99]
>>> numbers #原列表未发生次序改变
[12, 34, 3.14, 99, -10]
>>> n2=sorted(numbers,reverse=True)
>>> n2
[99, 34, 12, 3.14, -10]
numbers.sort(reverse=True)
>>> numbers
[99, 34, 12, 3.14, -10]
>>> n3=sorted(numbers,key=str)
>>> n3
[-10, 12, 3.14, 34, 99]
or object at 0x0000000002F370B8>
list(reversed(vehicle))
[‘bicycle’, ‘ship’, ‘subway’, ‘car’, ‘bus’, ‘train’]nv=[12,‘bus’,99,‘train’]
reversed(nv)
<list_reverseiterator object at 0x0000000002F370B8>list(reversed(nv))
[‘train’, 99, ‘bus’, 12]
sorted()函数
sorted()函数,对列表进行排序并返回新列表。例如:
```python
>>> numbers=[12,34,3.14,99,-10]
>>> n1=sorted(numbers) #新列表
>>> n1
[-10, 3.14, 12, 34, 99]
>>> numbers #原列表未发生次序改变
[12, 34, 3.14, 99, -10]
>>> n2=sorted(numbers,reverse=True)
>>> n2
[99, 34, 12, 3.14, -10]
numbers.sort(reverse=True)
>>> numbers
[99, 34, 12, 3.14, -10]
>>> n3=sorted(numbers,key=str)
>>> n3
[-10, 12, 3.14, 34, 99]