Python 语言基础(三)之列表,元组

一、列表

  1.概述:

  通过前两天的学习,我们知道变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班级有20个人,现在求班级的平均年龄。

  本质:list列表的本质是一种有序的集合

  2.创建列表

  语法:列表=[元素1,元素2,元素3……]说明:列表中的选项被称为元素,跟string类似,下标也是从0开始计数  

#创建空列表
list1 = []
#创建带有元素的列表
list2 = [10, 20, 30, 10]
print(list2)

  在列表中元素的数据类型可以不同(灵活性)

  

list3 = [33, "good", True, 10.32]
print(list3)

  3.列表元素的访问

  列表的取值

  功能:访问list列表中元素值

  语法:列表名[索引]

list4 = [22, 33, 12, 32, 45]
#下标从0开始,最大值为len(list4)-1
print(list4[0])

  注意:当索引值大于len(list4)-1的时候,会出现错误  

  列表元素的替换

  功能:更改列表元素的值

  语法:列表[下标] = 值

  

list4 = [22, 33, 12, 32, 45]
list4[0] = "hello"
print(list4[0])

  4.列表操作

  列表的组合

  语法:列表3 = 列表1 + 列表2

list1 = [1, 2, 3]
list2 = ['hello', 'yes', 'no']
list3 = list1 + list2
print(list3)

  列表的重复

  语法:列表 = 列表1*n

  若存在则返回True,否则返回False

list1 = [1, 2, 3]
print(1 in list1)

  列表截取

  语法:列表[start:end]表示获取从开始下标到结束下标的所有元素,包含start不包含end 

list1 = [1, 2, 3, 'hello', 'yes', 'no']
print(list1[2:4])
#若不指定start,则默认从0开始截取,截取到指定位置
#若不指定end,则从指定位置开始截取,截取到末尾结束

  二维列表

  语法:列表 = [列表1,列表2,列表3,……,列表n] 

#创建二维列表,即列表中的元素还是列表
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]

  二维列表取值

  语法:列表名【下标1】【下标2】

  注意:下标1代表第n个列表(下标从0 开始,下标2代表第n个列表中的第n个元素)

list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
print(list1[0][0])

  5.列表的方法

  list.append(元素/列表)

  功能:在列表中末尾添加新的元素【在原本的列表中追加元素】

  注意;append()中的值可以是列表也可以是普通元素

>>> list1 = [3, 4, 6]
>>> list1.append(6)
>>> print(list1)
[3, 4, 6, 6]

  list.extend(列表)

  功能:在列表的末尾一次性追加另外一个列表中的多个值

  注意:extend()中的值只能是列表/元组【一个可迭代对象】,不能是元素 

>>> list1 = [1,2,3]
>>> list2 = [3, 4,5]
>>> list1.extend(list2)
>>> print(list1)
[1, 2, 3, 3, 4, 5]

  list.insert(下标值,元素\列表)

  功能:在下标处插入元素,不覆盖原本的数据,原数据向后顺延

  注意:插入的数据可以是元素也可以为列表

>>> list1 = [1,2,3]
>>> list1.insert(1,0)
>>> print(list1)
[1, 0, 2, 3]
>>> list1.insert(1,[2, 4, 8])
>>> print(list1)
[1, [2, 4, 8], 0, 2, 3]

  list.pop(下标值)

  功能:移除列表中指定下标处的元素(默认移除最后一个元素),并返回移除的数据

>>> list1 = [1, [2, 4, 8], 0, 2, 3]
>>> list1.pop()
3
>>> print(list1)
[1, [2, 4, 8], 0, 2]
>>> list1.pop(2)
0
>>> print(list1)
[1, [2, 4, 8], 2]

  list.remove(元素)

  功能:移除列表中的某个元素第一个匹配结果

>>> list1 = [1, 2, 3]
>>> list1.remove(2)
>>> print(list1)
[1, 3]

  list.clear()

  功能:清除列表中所有的数据  

>>> list1 = [1, 2, 3]
>>> list1.clear()
>>> print(list1)
[]

  list.index(下标[,start][,stop])

  功能:从指定的范围的列表中找出某一个第一匹配的索引值

  若不指定范围,则默认是整个列表 

>>> list1 = [1, 2, 3]
>>> list1.index(2)
1
>>> list1.index(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 4 is not in list

  注意:若在列表中找不到这个元素,则会报错

  list.count(元素)

  功能:查看元素在列表中出现的次数 

>>> list1 = [1, 2, 3, 1]
>>> list1.count(1)
2

  len(list)

  功能:获取元素列表个数

>>> list1 = [1, 2, 3, 1]
>>> len(list1)
4

  max(list)

  语法:获取列表中的最大值

>>> list1 = [1, 2, 3, 1]
>>> max(list1)
3

  min(list)

  语法:获取列表中的最小值 

>>> list1 = [1, 2, 3, 1]
>>> min(list1)
1

  list.reverse()

  语法:列表倒序

>>> list1 = [1, 2, 3, 1]
>>> list1.reverse()
>>> print(list1)
[1, 3, 2, 1]

  list.sort()

  语法:列表排序  默认升序

>>> list1 = [1, 2, 3, 1]
>>> list1.sort()
>>> print(list1)
[1, 1, 2, 3]

  浅拷贝

  语法:list1 = [1, 2, 3, 4]

     list2 = list1

  深拷贝:

  语法:list1 = [1, 2, 3, 4]

     list2 = list1.copy()

  其中深拷贝为内存拷贝,开辟了新的内存空间

  

  list(元组)

  功能:将元组转为列表  

>>> list1 = list((1, 2, 3, 4))
>>> print(list1)
[1, 2, 3, 4]

  列表的遍历

  使用for循环遍历列表

  语法:

  for 变量名 in列表

    语法

  功能:for循环主要用于遍历列表

  遍历指的是依次访问列表中的每个元素,获取每个下标对应的元素值

  说明:按照顺序获取列表中的每个元素,赋值给变量名,再执行语句,如此循往复,直到取完列表中所有的为止 

>>> list1 = ['hello', 78, '你好', 'good']
>>> for item in list1:
...     print(item)
... 
hello
78
你好
good

  同时遍历下标与元素

  语法:

  for 下标,变量 in enumerate(列表)

    语句

>>> list1 = ['hello', 78, '你好', 'good']
>>> for index,item in enumerate(list1):
...     print(index, item)
... 
0 hello
1 78
2 你好
3 good
enumerate()[枚举]函数用于一个可遍历的数据对象(如列表,元组或者字符串)组合为一个索引序列,同时列出数据与数据下标,一般使用在for循环中
enumerate(obj, [start =0])
obj:一个可迭代对象
start:下标起始位置

  6.元组(tuple)

  概述:

  本质上是一种有序集合,和列表非常的相似,列表使[]表示,元组使用()表示

  特点:一旦初始化,就不能发生改变

  

  元组的创建:

  格式

  元组名 = (元素1,元素2,元素3,……) 

#创建空的元组
tuple1 = ()
print(tuple1)
#创建带有元素的元组
tuple2 =(22, 33, 14, 109)
print(tuple2)

#与列表类似,元组中的元素类型可以不同
tuple3 = (23,True,"good")
print(tuple3)

#定义只有一个元素的元组
tuple4 = (1)  #这定义的不是元组而是整数1
tuple4 = (1,) #定义一个元素的元组定义时必须加一个逗号",",用来消除歧义

  

  元组元素的访问

  访问元组中的元素:

  格式:元组名[下标] 

tuple1 = (2040201401)
print(tuple1[0])
#注意使用下标取值的时候,要注意下标的取值范围,不要下标越界
#获取最后一个元素
print(tuple1[-1])

  修改元组

  在元组定义的时候大家都知道元组一旦初始化就不能改变,但是现在如果我想改变元组怎么办?

  元组是不能修改的,但是列表可以,元组中的元组的数据类型可以是不同类型的,因此我们可以通过元组中添加一个列表,而列表是可以修改的,进而来“修改”我们的元组 

tuple1 = ('hello', 'you',[20, 30])
#修改元组
tuple1[0] = 'hi' 
#报错,元组不能修改
tuple1[2][1] = 'good'

  注意:从表面上看我们的元组确实是改变了,但其实改变的不是我们的元组,而是我们list的元素,所谓tuple不变是说,tuple的每个元素的指向永远不变,一旦它指向了这个list,就不能改变指向其他的对象,但是指向的list本身是可变的!

  删除元组

  元组是不可变的,但是我们可以使用del语句删除整个元组  

tuple1 = ('hello', 'hi')
del tuple1
print(tuple1)
#此时会报错

  元组操作

  元组连组合

  语法:

  元组1  元组2

  元组3 = 元组1 + 元组2

tuple1 = (1,  2, 3)
tuple2 = (4, 5, 6)
print(tuple1 + tuple2)
#结果
(1, 2, 3, 4, 5, 6)

  注意:元素连接组合并没有改变原来的元组,而是成了新的元组

  

  元组的重复

  语法:

  元组2 = 元组1 * n 

tuple1 = (1,  2, 3)
tuple2 = tuple1 * 3
print(tuple2)
#结果
(1, 2, 3, 1, 2, 3, 1, 2, 3)

  判断元素是否在元组中

  语法:

  元素 in 元组

  若存在则返回True,否则返回False

  

tuple1 = (1,  2, 3)
print( 1 in tuple1)
#结果
True

tuple1 = (1,  2, 3)
print( 5 in tuple1)
#结果
False

  元组的截取

  语法:

  元组名[start:end]

  截取范围【start,end)

  功能:获取开始下标到结束下标之前的所有元素。

  若不指定start则默认是从头开始截取到指定位置。

  若不指定end则默认从指定位置截取到结尾

tuple1 = (1,  2, 3, 8, 'hello', 'good')
tuple2 = tuple1[2:5]
print(tuple2)
#结果
(3, 8, 'hello')

tuple1 = (1,  2, 3, 8, 'hello', 'good')
tuple2 = tuple1[:5]
print(tuple2)
#结果
(1, 2, 3, 8, 'hello')

  7.元组的方法

  len(tuple)

  功能:获取元组元素的个数 

tuple1 = (1,  2, 3, 8, 'hello', 'good')
print(len(tuple1))
#结果
6

  max(tuple)

  功能:获取元组中元素的最大值 

tuple1 = (1,  2, 3, 8, 20, 13)
print(max(tuple1))
#结果
20

  min(tuple)

  功能:获取元组中元素的最大值

tuple1 = (1,  2, 3, 8, 20, 13)
print(min(tuple1))
#结果
1

  tuple(list)

  功能:将列表转换为元组 

list1 = [1,  2, 3, 8, 20, 13]
print(tuple(list1))
#结果
(1, 2, 3, 8, 20, 13)

  

1.使用for循环打印图形

    '''
    *
    **
    ***
    ****
    *****
    '''

2.写一个双色球彩票系统,系统可以随机产生一组数据,一组彩票数据有六位数,这六位数的的取值范围是0和1。

一张彩票是两块钱,可以设置用户的金额,用户可以选择继续买票或者是退出。买票和退出的时候要求打印剩余金额。

用户输入猜测的数据,若是猜对,则打印”恭喜你中大奖了“,若没猜中则打印”继续加油!“。

猜你喜欢

转载自www.cnblogs.com/baizhou1230/p/9151978.html