python第四课 列表

**

一.列表的数据项不需要具有相同的类型

创建一个列表,只要把逗号分隔的不同数据项实用方括号括起来即可.

列表也可以使用切片:原来字符串的切片在这里也可以用**

li=['a','b',1,'哈哈']
print(type(li))
print(li[:])#启用切片全部打印
print(li[-1::-1])#从后往前打印

执行命令的得

<class 'list'>
['a','b',1,'哈哈']
['哈哈',1,'b','a']

二.python列表函数和方法

(obj:目标对象 seq:序列号)
python包含以下函数

  1. len(list) 列表函数的个数
  2. max(list) 返回列表的最大值
  3. min(list) 返回列表的最小值
  4. list(seq) 将元组转换为列表

Python包含以下方法
1. list.append(obj) 在列表最后追加元素
2. list.count(obj)统计某个元素在列表中出现的次数
3. list.extend(seq) 在列表末尾一次性追加另一个序号中的多个值(用新的列表扩展原来的列表)
4. list.index(obj)在列表中找出某个值第一个匹配的索引位置即下标
5. list.insert(index.obj)将对象插入列表
6. list.pop(obj=list[-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7. list.remove(obj)移除列表中某个值得第一个匹配项
8. list.reverse()反向列表中元素
9. list.sort()对原列表进行排序
10. list.clear()清空列表
11. list.copy()复制列表

1列表的增、删、改、查(insert delete update query)

(1)增加
list.insert(index,obj)(指定位置增添)

list.append(obj)(在末尾增加)

list.extend(seq)(用新列表扩展原来的列表)

list.insert(index,obj)将对象插入列表超出位置在列表尾部添加

list.append(obj)在列表末追加新的对象

li.append('2018')#追加到末尾
print(li)
li.insert(li.__len__(),'青年')#增加到末尾
print(li)
li.insert(0,'青年节')#增加到第一位
print(li)

执行命令的

['Google', 'Runoob', 1997, 5000, '2018']
['Google', 'Runoob', 1997, 5000, '2018', '青年']
['青年节', 'Google', 'Runoob', 1997, 5000, '2018', '青年']

两个列表还可以进行相加
列表还可以*得操作符
list.extend(seq)再累表末尾一次性追加另一个序列中的多个值

list1.extend(list2)把列表二迭代后追加到列表一,extend()没有返回值

li1=['a','b','c','d']
li2=[1,2,3,4]
li3=[li1,li2]
li.extend(li2)
#for in in li2:#使用append方法将li2加入li1列表中
    #li.append(i)
print(li1)
print(li3)
print(li*2)#列表中的元素x

执行命令得

['a', 'b', 'c', 'd', 1, 2, 3, 4, 3]
[['a', 'b', 'c', 'd', 1, 2, 3, 4, 3], [1, 2, 3, 4, 3]]
['Google', 'Runoob', 1997, 5000, 'Google', 'Runoob', 1997, 5000]

(2)删除
del list[2]删除列表中下标为2得元素

list.pop(int index):把最后一个删除,也可以删除指定下标的元素

list.pop()(obj=list[-1])移除列表中的一个元素(默认为最后一个元素),并且返回该元素的值 参数是下标

list.remove(obj)一处列表中某个值得第一个匹配项

li2=[1,2,3,4,3]
del li2[2]#删除下标为2得元素
print(li2)
del li2[2:]#删除下标2以后的
print(li2)
li2=[1,2,3,4,3]
li2.pop(1)#删除指定下标
print(li2)
li2=[1,2,3,4,3]
li2.remove(3)#只删除第一个匹配项
print(li2)

执行命令得

[1, 2, 4, 3]
[1, 2]
[1, 3, 4, 3]
[1, 2, 4, 3]

(3)改

li2=[1,2,3,'a'}
li2[3]=4
print(li2)

执行命令得

[1,2,3,4]

(4)查
list.index(obj)从列表中找出某个值第一个匹配项的索引位置,该方法返回查找对象的索引位置,如果没有找到对象则抛出异常

li=[1,2,3,4,3]
print(li.index(3,3,5))#查找li中下标为3-5值为3得元素下标

执行命令得

li=[1,2,3,4,3]
print(li.index(1,0,5))#查找li中下标为0-5值为1得元素下标

执行命令得

0

可用in/not in 可以查找是否存在

li=[1,2,3]
print(1 in li)
print('1'in li)#查找时会判断元素类型

执行命令得

True
False

2.嵌套列表:[[‘a’,’b’,’c’],[1,2,3]]

li1=['a','b','c','d']
li2=[1,2,3,4,3]
li3=[li1,li2]
print(li3)
print(li3[1][3])#在li3中查找li2中下标为3得元素

执行命令得

[['a', 'b', 'c', 'd'], [1, 2, 3, 4, 3]]
4

3.dir(object)将一个数据类型的所有函数的属性打印

li1=['a','b','c','d']
li2=[1,2,3,4,3]
li3=[li1,li2]
print(dir(li3))

执行命令得

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

len()和len两类函数的区别:

len()类型代表的是全局函数在哪都可以用

len()类型的函数代表私有一般不调用只有在指定函数内部

<1>len(list)列表的元素个数

li1=['a','b','c','d']
print(len(li1))

执行命令得

4

<2>max(list)字母以ascii为依据

返回列表的最大值

min(list)

返回列表的最小值

li1=['a','b','c','d']
print(max(li1))
print(min(li1))

执行命令得

d
a

<3>list(seq)构造函数–>执行时开辟新空间 功能:初始化数据

将元组转化为列表

new_li=(1,2,3)
print(new_li)
new_li=list((1,2,3))
print(new_li)

执行命令得

(1, 2, 3)
[1, 2, 3]

id返回变量对象的内存地址

print(id(li1))#返回变量  对象的内存地址
print(id(li2))

执行命令得
78116144
78116744

<4>list.reverse()反向列表中元素

list.sort([func])对原列表进行排序 如果指定参数,则使用比较函数比较(func:函数)

li1=['a','b','c','d']
li1.reverse()#反向列表中的元素
print(li1)
li=[7,5,9,6,1,4,]
li.sort()#排序
print(li)

执行命令得

['d', 'c', 'b', 'a']
[1, 4, 5, 6, 7, 9]

<5>list.clear()清空列表

list.copy()复制列表

 li1=['a','b','c','d']
li2=[1,2,3,4,3]
li1.clear()#清除
print(li1)
li5=li2.copy()#复制
print(li5)

执行命令得

[]
[1, 2, 3, 4, 3]

复制得几种不同

a=[1,2,3]
b=a
b[2]=9
print(a)
print(b)#等值 b改变a也变

c=[]
c=a
c[1]=9
print(c)
print(a)

d=a[:]#把 a的值一一取出
d[1]=7
print(d)
print(a)

执行命令得

[1, 2, 9]
[1, 2, 9]
[1, 9, 9]
[1, 9, 9]
[1, 7, 9]
[1, 9, 9]

练习

创建2个列表 一个存姓名 一个存手机
=======通讯录管理系统=======
1.增加姓名和手机
2.删除姓名
3.修改手机
4.查询所有用户
5.根据姓名查找手机号
6.退出

============================

names=['张三']
phones=['123']
while True:
  print('=======通讯录管理系统=======')
  print('1.增加姓名和手机')
  print('2.删除姓名')
  print('3.修改手机')
  print('4.查询所有用户')
  print('5.根据姓名查找手机号')
  print('6.退出')
  print('============================')
  num=int(input('请输入数字:'))
    if num==1:
        name=input('请输入新姓名:')
        phone=input('请输入新电话:')
        while phone in phones:
            phone = input('电话已存在  请重新输入')
        names.append(name)
        phones.append(phone)
        print('录入成功')
    elif num==2:
        name = input('请输入姓名:')
        if name in names:
            index=names.index(name)
            del names[index]
            del phones[index]
            print('删除成功')
        else:
            print('此用户不存在')
    elif num==3:
        phone = input('请输入电话:')
        if phone in phones:
            new_phone=input('请输入新的电话:')
            while new_phone in phones:
                new_phone=input('新的电话已存在  请重新输入:')
            index=phones.index(new_phone)
            phones[index]=new_phone
            print('修改成功')
        else:
            print('此电话不存在')
    elif num==4:
        for i in range(names.__len__()):
            print(names[i],phones[i])
    elif num==5:
        name = input('请输入姓名:')
        if name in names:
            index = names.index(name)
            print("电话",phones[index])
        else:
            print('电话不存在')
    elif num==6:
        break
print('谢谢使用')

练习

列表遍历:可以使用while,for

while


season=['spring','summer','autumn','winter']
i=0
while i<len(season):
    print(season[i])
    i+=1

执行命令得

spring
summer
autumn
winter

for(一种直接获得一种通过下标获得)


season=['spring','summer','autumn','winter']
for i in range(season.__len__()):
    print(season[i])
    #或者
for i in season:
    print(i)

执行命令得


spring
summer
autumn
winter

练习

一个字符串将其分割成列表且数据类型为整型

v="1,2,5,7".split(',')
print(v)

执行命令得

['1', '2', '5', '7']

猜你喜欢

转载自blog.csdn.net/weixin_42067855/article/details/80249823