day7-列表


一、认识列表

1. 定义:

  • 是python中的容器类的数据类型,可以用来存储多个数据。可变的,有序的。
    可变(列表中的元素的值和位置以及列表的长度可变) --->决定列表可以进行增删改
    有序 --->决定可以通过下标来获取元素

2.字面量:

  • [元素1, 元素2, 元素3....]
    [] ---> 空列表
  • 附:列表中的元素可以是任何类型的数据,包括整数、浮点数、布尔、字符串、列表、字典、元祖、集合、函数、类的对象等
  • 例子:
list1 = [23, 1.87, 'abc']   # 声明一个变量list1,给它赋了一个列表。列表有三个元素

# 声明一个列表,列表中有三个元素,分别是[1,2], 'abc', False
list2 = [
    [1,2],
    'abc',
    False
]

list3 = [
    {'a': 10},
    {'abc': True}
]
print(type(list3))

# 注意:变量也可以作为列表的元素
name = '路飞'
names = ['小明', '小花', '小红', name]
print(names)

二、列表元素的增删改查

1.查

  • a.获取单个元素
    • 列表[下标]

    • 说明:列表一旦确定,列表中的每个元素的下标就确定了。下标的范围0~列表长度-1 / -1~列表长度

  • b.获取部分元素(切片) ---> 结果是个列表
    • 列表[起始下标:结束下标] --> 从起始下标开始,获取到结束下标前为止

    • 列表[起始下标:结束下标:步长]

  • 例子:
names = ['路飞', '娜美', '佐罗', '山治', '罗宾']
print(names[0], names[-4])
#路飞 娜美
# print(names[20])  # 下标不能越界

print(names[1:3])
print(names[:4:2])
print(names[::-1])
print(names[:])
#['娜美', '佐罗']
#['路飞', '佐罗']
#['罗宾', '山治', '佐罗', '娜美', '路飞']
[#'路飞', '娜美', '佐罗', '山治', '罗宾']

2.增

  • a.
    列表.append(元素) ---> 在列表的最后添加一个元素

  • b.
    列表.insert(下标,元素) ---> 在指定的下标前去添加指定的元素

  • 例子:

films = ['绿巨人', '钢铁侠', '蜘蛛侠', '神奇女校']
films.append('美国队长')
print(films)
#['绿巨人', '钢铁侠', '蜘蛛侠', '神奇女校', '美国队长']
films.append('恐怖游轮')
print(films)
#['绿巨人', '钢铁侠', '蜘蛛侠', '神奇女校', '美国队长', '恐怖游轮']
films.insert(1, '双瞳')
print(films)
#['绿巨人', '双瞳', '钢铁侠', '蜘蛛侠', '神奇女校', '美国队长', '恐怖游轮']
films.insert(0, '雷神')
print(films)
#['雷神', '绿巨人', '双瞳', '钢铁侠', '蜘蛛侠', '神奇女校', '美国队长', '恐怖游轮']

3.删

  • a.
    del 列表[下标] ---> 删除列表中指定位置的元素
    注意:del语句是python中用来删除数据的语法,可以删除任何数据

  • b.
    列表.remove(元素) ---> 删除列表中指定的元素
    注意:如果这个元素在列表中有多个,只删最前面的那一个

  • c.
    列表.pop() ---> 将列表中的最后一个元素取出
    列表.pop(下标) ---> 将列表中指定下标对应的元素取出

  • 例子:

heros = ['盖伦', '儿童劫','维克拖', '提姆', '托儿索', '儿童劫']
del heros[-2]
print(heros)
#['盖伦', '儿童劫', '维克拖', '提姆', '儿童劫']
heros.remove('儿童劫')
print(heros)
#['盖伦', '维克拖', '提姆', '儿童劫']
beauty = ['余婷', '范冰冰', '周迅', '杨颖', '杨幂', '赵丽颖']
person = beauty.pop()
print(beauty, person)
#['余婷', '范冰冰', '周迅', '杨颖', '杨幂'] 赵丽颖
person = beauty.pop(1)
print(beauty, person)
#['余婷', '周迅', '杨颖', '杨幂'] 范冰冰

4.改

  • 列表[下标] = 新值 ---> 修改指定下标对应的元素

  • 例子:

teachers = ['余婷', '骆昊', '王海飞', '肖世荣']
teachers[0] = 'YuTing'
print(teachers)
#['YuTing', '骆昊', '王海飞', '肖世荣']

三、列表运算

1.+和×

  • 列表1 + 列表2 ---> 将列表1和列表2中的元素合并,产生一个新的列表
  • 列表*n ---> 将列表中的元素重复n次,产生一个新的列表

  • 例子:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
print(list1 + list2)
#[1, 2, 3, 'a', 'b', 'c']
print(list1)
#[1, 2, 3]
print(list1*3)
#[1, 2, 3, 1, 2, 3, 1, 2, 3]

2.比较运算

  • 列表1 == 列表2 ---> 判断两个列表中的元素是否相等(判断的是值是否相等)

  • 列表1 is 列表2 ---> 判断两个列表中的元素是否相等(判断的是地址是否相等)

  • 附:两个列表比较大小,比较的是每个元素的大小

  • 例子:

list1 = [1, 2, 3]
list2 = [1, 2, 3]
list3 = list1
print(id(list1), id(list2), id(list3))
# 2673719124168 2673719098824 2673719124168
print(list1 == list2)   # True
print(list1 is list2)   # False
print(list1 is list3)   # True

3.赋值运算

  • 列表1 = 列表2 ---> 将list1中的数据的id赋给list2

  • 注意:会因为修改其他一个列表的元素而影响另外一个列表,如果不想相互影响,赋值的时候赋切片或者拷贝

  • 例子:

list1 = ['a', 'aa', 'aaa']
list2 = list1   # 将list1中的数据的id赋给list2
list2.append('aaaa')
print(list2)
#['a', 'aa', 'aaa', 'aaaa']
print(list1)
#['a', 'aa', 'aaa', 'aaaa']

list3 = list1[:]  # 将list1中的数据拷贝一份,存到新的内存区域中,然后将新的地址给list3
list3.pop(0)
print(list3)
['aa', 'aaa', 'aaaa']
print(list1)
['a', 'aa', 'aaa', 'aaaa']

四、列表的函数与方法

1.函数

函数 说明
len(list) 列表元素个数
max(list) 返回列表元素最大值
min(list) 返回列表元素最小值
list(字符,range, 列表,字典,元祖,集合,迭代器) 将序列转换为列表

2.方法

方法 说明
list.append(obj) 在列表末尾添加新的对象
list.count(obj) 统计某个元素在列表中出现的次数
list.extend(seq) 返在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
list.insert(index,obj) 将对象插入列表
list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) 移除列表中某个值的第一个匹配项
list.reverse() 反向列表中元素
list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序
list.clear() 清空列表
list.copy() 复制列表

作业

  1. 已知一个列表,求列表中心元素。
scores = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
index1 = int(len(scores))
if index1 % 2:
    print(scores[index1//2])
else:
    print(scores[index1//2-1], scores[index1//2])
题一
  1. 已知⼀个列表,求所有元素和。
scores = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
sums = 0
for score in range(len(scores)):
    sums += scores[score]
print(sums)
题二
  1. 已知一个列表,输出所有奇数下标元素。
scores = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
for score in range(1,len(scores)+1,2):
    print(scores[score])
题三

4.已知⼀一个列列表,输出所有元素中,值为奇数的。

scores = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
for score in range(len(scores)):
    if scores[score] % 2:
        print(scores[score])
题四
  1. 已知⼀个列表,将所有元素乘⼆。
scores = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
for score in range(len(scores)):
    scores[score] *= 2
print(scores)
题五
  1. 已知⼀个列表,将所有元素加到第⼀个元素中
scores = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
for score in range(len(scores)):
    scores[0] += scores[score]
print(scores)
题六
  1. 已知⼀个列表A,将奇数位置元素存到B列表中,偶数元素存到C列表中。
A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = []
C = []
for i in range(len(A)):
    if i % 2:
        B.append(A[i])
    else:
        C.append(A[i])
print(B,C)
题七
  1. 把A列表的前5个元素复制到B列表中
A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = []
for i in range(len(A)):
    if i >4:
        break
    else:
        B.append(A[i])
print(B)

题八
  1. 有⼀个长度是10的列表,列表内有10个不重复的数字,要求按从大到小排序。
scores = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
scores.sort(reverse=-1)
print(scores)
题九
  1. 有⼀个长度是10的列表,要求删除某一个位置的元素
scores = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
n = input('输入一个小于10的数字:')
n = int(n)
print(scores)
del scores[n]
print(scores)
题十
  1. 有一个长度是10的列表,按递增排列,用户输入一个数,插入适当位置。
scores = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
index1 = 0
n = input('输入一个数字:')
n = int(n)
for score in scores:
    if score >= n:
        scores.insert(index1,n)
        break
    index1 += 1
print(scores)
题十一
  1. 有一个长度是10的列表,数组内有10个人名,要求去掉重复的
lists = ['嘿嘿', '哈哈', '吼吼', '哦哦', '嗯嗯', '嘿嘿', '咦咦', '呵呵', '哦哦', '嗷嗷']
lists1 = []
for i in lists:
    if i not in lists1:
        lists1.append(i)
print(lists1)
题十二
  1. 把A列表的第三到第六位之间的元素删除。
# A=[1, 2, 3, 4, 5, 6, 7, 8, 9]
# del A[3:6]
# print(A)
题十三
  1. 已知A列表,B列表,定义一个列表C,要求C包含A,B数组中的数据(无重复值)
A=[1, 2, 3, 4, 5, 6, 7, 8, 9]
B=[1, 3, 5, 7, 9, 11, 13, 15]
C=[]
for i in A+B:
    if i not in C:
        C.append(i)
print(C)
题十四

你可能感兴趣的:(day7-列表)