今天主要学习了Python的编程基础知识,数据类型Number,序列和列表。把学习的笔记整理分享一下。
第三天 Python基础知识
1.数据类型:Number
Python Number 数据类型用于存储数值
数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间。
以下实例在变量赋值时 Number 对象将被创建:
# 实例 1 var1 = 5 var2 = 10
您也可以使用del语句删除一些 Number 对象引用。
del语句的语法是:
# 实例 2 del var1[,var2[,var3[....,varN]]]]
Number支持四种不同的数值类型:
整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。 长整型(long integers) - 无限大小的整数,整数最后是一个大写或小写的L。 浮点型(floating point real values) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250) 复数(complex numbers) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型。
Python提供的Number类型转换函数:
int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建一个复数 str(x ) 将对象 x 转换为字符串 repr(x ) 将对象 x 转换为表达式字符串 eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象 tuple(s ) 将序列 s 转换为一个元组 list(s ) 将序列 s 转换为一个列表 chr(x ) 将一个整数转换为一个字符 unichr(x ) 将一个整数转换为Unicode字符 ord(x ) 将一个字符转换为它的整数值 hex(x ) 将一个整数转换为一个十六进制字符串 oct(x ) 将一个整数转换为一个八进制字符串
数学函数
随机数函数
三解函数
数学常量
2.序列
Python中的序列结构主要有列表、元组、字符串、集合和字典。
序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引),并且序列中的数据会按照 添加的顺序来分配索引。通过该索引可以取出相应位置的值。
2.1 索引
Python的序列索引不同于Java,它分为正数索引和负数索引
正数索引:从序列的左侧第一个开始,索引值为0,依次向右递增(0,1,2,3…n)
负数索引:从序列的右侧第一个开始,索引值为-1,依次向左递减(-n…-3,-2,-1)
示例:
#序列 student=["小明","小李","小王","小天"] print(student[1]) print(student[2]) print(student[-1]) print(student[-2])
输出结果:
小李 小王 小天 小王
2.2 切片
切片操作可以访问序列中的一定范围内的元素,通过切片操作可以生成一个新的序列,就是取原序列中的一部分。
sname[start:end:step] 说明: sname:序列名称 start:切片的开始位置索引(包含此位置),如果不指定,则默认为0 end:切片的截至位置索引(不包括该位置),如果不指定则默认为序列的长度 step:步长,如果省略,则默认为1,当省略步长时,最后一个冒号也可以省略
示例:
#序列 切片 myseq=[0,1,2,3,4,5,6,7,8,9] newseq=myseq[0:5] #省略步长 print(newseq) newseq=myseq[0:5:2] #指定步长为2 print(newseq) 结果输出: [0, 1, 2, 3, 4] [0, 2, 4]
2.3 序列相加
Python支持两种类型相同的序列相加(+):类型相同指双方同为列表、元组或集合,元素类型可以不同
示例:
#序列 相加 myseq=[0,1,2,3,4,5,6,7,8,9] myseq2=["a","b","c"] newseq = myseq+myseq2 print(newseq) 结果输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c']
2.4 序列乘法
Python中使用序列和一个整数字N相乘,相当于重复原有序列N次。
示例:
myseq=["a","b","c"] print(myseql) 结果输出: ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
2.5 元素检测
可以使用in关键字检测某个元素在不在某个序列中。返回True表示在,返回False表示不在。
value in sequence
也可以使用not in关键字检测某个元素是否不在某个序列中。返回True表示有在,返回False表示在。
value not in sequence
示例:
#序列 元素检测 myseq=["a","b","c"] print("a" in myseq) print("e" not in myseq) 输出: True True
2.6 序列的内置函数
序列的长度:len()
序列的最大值:max()
序列的最小值:min()
#序列 内置函数 myseq=["a","b","c","d","e","f"] print(len(myseq)) print(max(myseq)) print(min(myseq))
其它的内置函数:
list():将序列转换为列表 str():将序列转换为字符串 sum():计算元素和 sorted():对元素进行排序 reversed():反向序列中的元素 enumerate():将序列组合为一个索引序列,多用在for循环中
3.列表
列表是由一系列按特定顺序排列的元素组成的序列。它是Python的内置可变序列。可以将整数、实数、字符串、列表、元组等任何类型的元素放入列表中。同一列表的元素类型可以不同。
3.1 列表的创建和删除
赋值运算符直接创建:
mylist=[1,2,3,4,5]
创建空列表:
emptylist=[]
数值列表:python中可以使用list()函数直接将range()函数循环的结果、字符串、元组或其它可迭代类型的数据转换为列表
mylist=list(range(10,20,2))
小贴士:
range(start, stop[, step]:用于生成一系列连续的整数。
删除列表:
del mylist
小贴士:
在实际应用,一搬不用手动删除,Python提供的垃圾回收机制会自动销毁不用的列表。
3.2 访问列表
直接根据索引访问:
mylist=[1,2,3,4,5] print(mylist[0])
使用for循环遍历:
#列表访问 mylist=list(range(10,20,2)) print(mylist) for item in mylist: print(item)
使用for循环和enumerate()函数可同时输出索引值和元素内容:
#列表访问 mylist=list(range(10,20,2)) print(mylist) for index,item in enumerate(mylist): print(index,item)
3.3 列表元素添加、修改和删除
使用append()方法实现元素添加:未尾追加
mylist=[1,2,3,4,5] mylist.append(6) print(mylist)
使用insert()方法实现元素添加:指定位置添加 执行效率低,不推荐
#列表元素添加 mylist=[1,2,3,4,5] mylist.insert(2,"a") print(mylist)
使用extend()将一个列表追加到另一个列表中:和+号功能相同
#列表元素添加 将mylist2追加到mylist中 mylist=[1,2,3,4,5] mylist2=["a","b","c"] mylist.extend(mylist2) print(mylist) #列表元素添加 将mylist2追加到mylist中 mylist=[1,2,3,4,5] mylist2=["a","b","c"] print(mylist+mylist2)
修改元素只要通过索引获得要修改的元素,再为其重新赋值即可:
#列表元素修改 mylist=[1,2,3,4,5] mylist[1]="a" print(mylist)
删除元素可以根据索引删除,也可以根据值删除:
#列表元素删除 mylist=[1,2,3,4,5] del mylist[1] print(mylist) #列表元素删除 mylist=[1,2,3,4,5] mylist.remove(1) print(mylist)
使用remove删除前,最好判断一下此元素是否存在:否则会报错
#列表元素删除 mylist=[1,2,3,4,5] if 8 in mylist: mylist.remove(8) print(mylist) else: print("此元素不存在")
或:
#列表元素删除 mylist=[1,2,3,4,5] if mylist.count(8)>0: #count统计列表中某个元素的个数 mylist.remove(8) print(mylist) else: print("此元素不存在")
3.4 列表统计
count():统计元素在列表中出现的次数
mylist=[1,2,3,4,5] mylist.count("a")
index():获得指定元素首次出现的下标
mylist=[1,2,3,4,5,1] mylist.index(1)
sum():统计数值列表的元素和
sum(列表,[start])
mylist=[1,2,3,4,5] total = sum(mylist)
3.5 列表排序
使用列表对象的sort()方法排序:此函数对中文支持不好
listname.sort(key=None,reverse=False) #括号内为默认值 糁数:key 表示从每个元素提出一个用于比较的键,如key=str.lower 表示在排序列时不区别大小写 参数:reverse=True 表示降序排列 ;reverse=False 表示升序排列
#列表元素排序 默认是先排大写,再排小写 mylist = ["Efg","Abc","def","bcd"] mylist.sort() print(mylist) #列表元素排序 忽略大小写排序 mylist = ["Efg","Abc","def","bcd"] mylist.sort(key=str.lower) print(mylist)
使用内置的sorted()方法进行排序:
sorted(listname,key=None,reverse=False)
示例:
#列表元素排序 mylist = [1,2,3,4,5] newlist = sorted(mylist) print(newlist) newlist = sorted(mylist,reverse=True) print(newlist)
3.6 列表推导
生成指定范围的数值列表:
list = [Expression for var in range]
示例:
#列表推导式 import random randomnumber=[random.randint(10,100) for i in range(10)] print(randomnumber)
根据列表生成指定需求的列表:
list = [Expression for var in list]
示例:
#列表推导式 mylist = [4,8,6,10,20] newlist =[x*0.5 for x in mylist] print(newlist)
从列表中选择符合条件的元素组成新的列表:
list = [Expression for var in list if condition]
示例:
#列表推导式 mylist = [4,8,6,10,15,20] newlist =[x for x in mylist if x%2==0] print(newlist)
4.元组
元组(tuple)是由一系列按特定顺序排列的元素组成的序列,与列表类似,但它是不可变的。它是Python的内置不可变序列。可以将整数、实数、字符串、列表、元组等任何类型的元素放入元组中。同一元组的元素类型可以不同。元组所有的元素都放在( )中。
4.1 元组的创建与删除
赋值运算符直接创建元组:
tuplename=(elment1,elment2....)
username=("xiaoming","xiaocong","xiaodan","xiaotian")
其实不用小括号,Python 也会将其识别为一个元组:
username="xiaoming","xiaocong","xiaodan","xiaotian"
如果创建的元组只有一个元素,需要在元素后面加一个,号,不然会被识别为字符串
#元组 username=("xiaoming",) print(type(username)) username=("xiaoming") print(type(username))
创建空元组:
tuplename=()
创建数值元组:python中可以使用list()函数直接将range()函数循环的结果、字符串、元组或其它可迭代类型的数据转换为元组
tuple(data)
#数值元组 print(tuple(range(10,20,2))) print(tuple([1,2,3,4,5]))
删除元组:
del tuplename
4.2 访问元组元素
username=("xiaoming","xiaocong","xiaodan","xiaotian") print(username[1]) print(username[:3]) #切片访问
4.3 修改元组
元组内元素是不可以修改的,但可以对元组进行重新赋值或进行连接。
username=("xiaoming","xiaocong","xiaodan","xiaotian") username=("daming","dacong","dadan","datian") newtuple=username+("dayu","damao") print(newtuple)
4.4 元组推导式
基本上和列表一样:
#元组推导式 import random randomnumber=[random.randint(10,100) for i in range(10)] randomnumber=tuple(randomnumber) print(randomnumber)
#元组推导式 mytuple = (4,8,6,10,15,20) newtuple =(x for x in mylist if x%2==0) print(tuple(newtuple))
列表和元组的区别:
元组和列表同属序列类型,且都可以按照特定顺序存放一组数据,数据类型不受限制,只要是 Python 支持的数据类型就可以。那么,元组和列表有哪些区别呢?
元组和列表最大的区别就是,列表中的元素可以进行任意修改,就好比是用铅笔在纸上写的字,写错了还可以擦除重写;而元组中的元素无法修改,除非将元组整体替换掉,就好比是用圆珠笔写的字,写了就擦不掉了,除非换一张纸。
- 元组作为很多内置函数和序列类型方法的返回值存在,也就是说,在使用某些函数或者方法时,它的返回值会元组类型,因此你必须对元组进行处理。
- 元组比列表的访问和处理速度更快,因此,当需要对指定元素进行访问,且不涉及修改元素的操作时,建议使用元组。
- 元组可以在映射(和集合的成员)中当做“键”使用,而列表不行。这会在后续章节中作详解介绍。