python的独特之处
python在变量方面最独特的地方在于:这货的变量竟然不需要声明;C语言中总是在创建变量的时候声明一下:int a = 1;但是在python中这么写是违法的。在python中变量本身没有类型,在python中的“类型”是指变量指向的内存中对象的类型。不得不说真的很方便。
其次python允许同时对多个变量赋值:
a=b=c=1
a,b,c=1,2,'suzi'
同时也可以对多个变量指定多个对象,如上述代码所示;第一行是同时赋值a,b,c为1;第二行是指赋值a=1,b=2,c='suzi'其中c为字符串对象。
python中常见的数据类型
- 数字number
- 字符串String
- 布尔类型bool
- 列表list
- 元组tuple
- 集合set
- 字典Dictionary
其中数字、字符串、元组是不可变数据;列表、字典、集合是可变数据。
还有一些高级的数据类型,如字节数组类型(本人还没有学到,等学到了一定单独整理。。。)
Number数字类型
在python中,只有int一种整形(我去真简单)
数字类型有int,float,bool,complex(复数)四种
值得注意的是,在python中,bool类型是int的子类,True和False可以和整形相加,如下所示
a=1
b=2.0
c=True
d=1+2j
e=a+c
print(e)
D:/PYTHON_CODE/Train_File/train01.py
2
数值运算
在python中加减乘除如下代码所示:
a=1+2
b=1-2
c=1*2
d=1/2#单个/号得到的结果是一个浮点数
e=1//2#两个/号得到的是一个整数
f=1%2#取余操作
g=2**3#2的3次方
print(a,b,c,d,e,f,g)
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
3 -1 2 0.5 0 1 8
值得注意的是,python中的除法操作分两种,切莫混淆。
另外,在混合运算中,整形数据会自动转换为浮点数。
String字符串
python中的字符串用单引号和双引号都可以没区别’
字符串可以截取,具体字符串的具体用法如下所示:
(索引值以0是从头开始,以-1是从末尾开始)
但是比如说索引值为a[0:-1],它指的是从第一位到倒数第二位,在python中这样的表示是不包含最后一位的。要想从开始到最后一位需要这么写:a[0: ] 具体见代码:
a='123456789'
print(a)
print(a[0])
print(a[0:-1])
print(a[0:])
print(a[0:-1:2])#2表示步长,即取第一位,第三位,第五位。。。。。
print(a[3:5])
print(a*2)
print(a+'suzi')
print(a[3:5]*2)
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
123456789
1
12345678
123456789
1357
45
123456789123456789
123456789suzi
4545
转义符
字符串中如果有转义符会自动转义,如果不想让他转义就在前面加个r
b='123456\n789'
print(b)
c=r'123456\n789'
print(c)
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
123456
789
123456\n789
但是和C语言不通的是,python中的字符串是不可以被修改的。
bool布尔类型
bool类型在数字类型之中就已经提到,这里记录一下布尔类型转换:
利用bool()函数可以将其他的类型转换为布尔类型;当转换的数据为0,0.0,0+0j,空序列,空映射时,转换为False,其他的全为True。
print(bool(0))
print(bool(1))
print(bool(1.2))
print(bool(''))
print(bool(' '))
print(bool([]))
print(bool(()))
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
False
True
True
False
True
False
False
注意:空格不是空字符串,它的长度为1
List列表
列表的用法和字符串差不多,都是按一个序列来整的
序列的元素之间用逗号隔开
list1=[1,2.0,2+2j,True,'suzi']
list2=['zhangsan',100]
print(list1[0])
print(list1[0:-1])
print(list1[0:])
print(list1[0::2])
print(list1+list2)
print(list1*2)
list1[0]=2
print(list1)
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
1
[1, 2.0, (2+2j), True]
[1, 2.0, (2+2j), True, 'suzi']
[1, (2+2j), 'suzi']
[1, 2.0, (2+2j), True, 'suzi', 'zhangsan', 100]
[1, 2.0, (2+2j), True, 'suzi', 1, 2.0, (2+2j), True, 'suzi']
[2, 2.0, (2+2j), True, 'suzi']
跟字符串不同的是,列表中的数据是可以改变的
如果截取步长为负数,则表示可以逆向读取如list1[-1: :-1],第一个-1表示从倒数第一个值开始,第二个-1表示从尾到头读取。
def reverseWords(input):
inputWord=input.split(" ")
inputWord=inputWord[-1: :-1]
output=' '.join(inputWord)
return output
input='I am boy'
output=reverseWords(input)
print(output)
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
boy am I
从这里学到了split()函数和jion()函数
def reverseWords(input):
inputWord=input.split("b")
inputWord=inputWord[-1: :-1]
output='c'.join(inputWord)
return output
input='abababab'
output=reverseWords(input)
print(output)
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
cacacaca
其实还蛮有趣。
Tuple元组
元组跟列表更是相似,但是用法不一样,元组用()括住,而且元组和字符串一样不能进行修改,有趣的是元组里面可以引用列表,这个列表可以修改:
list1=[1,2.0,2+2j,True,'suzi']
tup1=(1,2.0,3,True,list1)
print(tup1)
list1[0]=2
print(tup1)
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
(1, 2.0, 3, True, [1, 2.0, (2+2j), True, 'suzi'])
(1, 2.0, 3, True, [2, 2.0, (2+2j), True, 'suzi'])
然后就是元组之中只有一个元素时需要加个逗号a=(1,),不然的话a=(1)会被自动识别为带括号的整形数据。元组本身虽然不能修改,但是元组和元组之间可以像字符串一样拼接。
Set集合
和我们高中数学学的集合一样,无序,不重复,可以空。
创建方式:
a={1,2,3,True,4,5,2}#第一种方法a={a1,a2,a3....}大花括号
b=set('asdfghjkas')#第二种方法
c=set('dfgjkdf')#a=set(value)
print(a)
print(b)
print(c)
print(c-b)
print(c|b)
print(c&b)
print(c^b)
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
{1, 2, 3, 4, 5}
{'j', 'g', 'a', 'h', 's', 'f', 'd', 'k'}
{'j', 'g', 'f', 'd', 'k'}
set()
{'j', 'g', 'a', 'h', 's', 'f', 'd', 'k'}
{'j', 'g', 'f', 'd', 'k'}
{'a', 'h', 's'}
Dictionary字典
字典中的元素是通过键来存取的,跟列表不一样,列表是有序的,可以用偏移来对值进行索引,可以直接a[0],a[1]....字典是无序的,后面可以在做学生管理系统的时候用到,好比是一个班考试,张三考了100,李四考了99,那么’张三‘,’李四‘就是所谓的键,100,99就是所谓的值。为了索引的必要,键必须是唯一的。
dict1 = {}
dict1['zhangsan'] = 100
dict1['lisi'] = 99
dict2 = {'zhangsan': 100,'lisi':99, 'wangwu':98}
print(dict1)
print(dict1['zhangsan'])
print(dict1['lisi'])
print(dict2)
del dict2['zhangsan']
print(dict2.keys())
print(dict2.values())
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
{'zhangsan': 100, 'lisi': 99}
100
99
{'zhangsan': 100, 'lisi': 99, 'wangwu': 98}
dict_keys(['lisi', 'wangwu'])
dict_values([99, 98])
bytes 类型
其实本人不太明白这是干啥用的,希望在以后的学习中能正式的接触到这种数据类型的运用。
它表示的是一个二进制序列,序列中存储的元素是0-255的整数,一般的创建方式是加b前缀
x=b'suzi'#定义一个bytes序列
print(x[0])#看看第一位存储的是几
if(x[1]==ord('u')):
print('对的')
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
115
对的
ord()将取出来的字符换成整数值(说实话确实迷糊)
python中数据类型的判定
python中内置type()函数可以判定变量的数据类型,使用方式如下:
a=1
b=2.0
c=True
d=1+2j
e=a+c
print(type(a),type(b),type(c),type(d))
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
用法还是很简单的
其次还能用isinstance来判断
x= isinstance(a,int)
print(x)
返回的是布尔值True
值得注意的是,type()不会把子类型当作父类型的一种类型,而isinstance会把子类型当作父类型的一种类型,举个例子比如下面代码:
f=True
y=isinstance(f,int)
z=(type(f)==int)
print(y,z)
返回的结果如下图所示:
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
True False