python列表list的用法

Python列表

  • 列表介绍:

    前面学习的字符串可以用来存储一串信息,Python列表是用来存放多个字符串或者变量等,Python列表中的元素可以是不同类型的。

    列表的格式:变量A的类型为列表namesList = ['xiaoWang','xiaoZhang','xiaoHua']

    比C语言的数组强大的地方在于列表中的元素可以是不同类型的:testList = [1, 'a']

  • 列表的循环遍历:

    1. 使用while循环:

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
length = len(namesList)
= 0
while i<length:
    print(namesList[i])
    i+=1
'''
输出结果:
xiaoWang
xiaoZhang
xiaoHua
'''

1. 使用for循环:

  • namesList = ['xiaoWang','xiaoZhang','xiaoHua']
    for name in namesList:
        print(name)
    '''
    结果
    xiaoWang
    xiaoZhang
    xiaoHua
    '''
  • 列表的相关操作

    1,添加元素:

    1.1通过append可以向列表添加元素

  • my_list = ['laofeng''laowang''laoli']
    name = 'laozhou'
    my_list.append(name)
    for in my_list:
        print(n)
    '''
    输出结果
    laofeng
    laowang
    laoli
    laozhou
    '''

    1.2,extend:通过extend可以将另一个集合中的元素逐一添加到列表中

    = [12]
    = [3,4]
    a.extend(b) # a此时是一个列表[1,2,3,4]
    for in a:
        print(i)
    '''
    输出结果:
    1
    2
    3
    4
    '''

    1.3,insert:nsert(index, object) 在指定位置index前插入元素object

    = [123]
    a.insert(3,4#
    for in a:
        print(i)
    '''
    输出结果:
    1
    2
    3
    4
    '''

    2,修改元素:修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改

    name = ['xiaoWang''xiaoZhang''xiaoHua']
    name[1= 'xiaoLu' # 修改name[1]的值为xiaoLu
    for in name:
        print(n)
     
    '''
    结果
    xiaoWang
    xiaoLu
    xiaoHua
    '''

    3,查找元素("查"in, not in, index, count),所谓的查找,就是看看指定的元素是否存在

    in, not in:判断元素是否在列表中,返回True或者False

    nameList = ['xiaoWang','xiaoZhang','xiaoHua']
    findName = 'xiaoZhang'
    if findName in nameList:
        print('在列表中找到了相同的名字')
    else:
        print('没有找到')
     
        #结果 在列表中找到了相同的名字
    # 说明:in的方法只要会用了,那么not in也是同样的用法,只不过not in判断的是不存在

    index和count与字符串中的用法相同,返回下标位置

    = ['a''b''c''a''d']
    print(a.index('d'14)) # 不存在,报错
    print(a.index('a'14)) # 结果:3,在下标1到4(不包括4)之间查找'a'
    print(a.count('b')) # 结果:1
    print(a.count('f')) # 结果:0,表示没找到


    4,删除元素("删"del, pop, remove)

    del:根据下标进行删除

    pop:删除最后一个元素,也可以删除相应下标的元素

    remove:根据元素的值进行删除

    name = ['a''b''c''a''d''e']
    del name[2# 删除下标为2的元素,即'c'
    name.pop() # 删除最后一个元素,即'e'
    name.pop(0# 删除第一个元素
    name.remove('a'# 删除第一内容为'a'的元素
     
    for in name:
        print(n)
    '''
    结果
    b
    d
    '''


    5,排序(sort, reverse)

    sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。

    reverse方法是将list倒序。

  • list = ['c''b''a''d']
    list.sort() # 从小到大
    for in list:
        print(l)  # 结果:abcd
     
    rev = ['c''b''a''d']
    rev.reverse() # 倒序
    for in rev:
        print(r) #结果:dabc
     
    l_rev = ['c''b''a''d']
    l_rev.sort(reverse=True# 先从小到变成abcd,再倒序变成dcbd
    for l_r in l_rev:
        print(l_r) # 结果dcba
  • 列表嵌套

    类似while循环的嵌套,列表也是支持嵌套的

    一个列表中的元素又是一个列表,那么这就是列表的嵌套

  • s_names = [['北京大学','清华大学'],['南开大学','天津大学','天津师范大学'],['山东大学','中国海洋大学']]
    print(s_names[1]) # ['南开大学', '天津大学', '天津师范大学']
    print(s_names[1][0]) # 南开大学
     
    for in s_names[2]:
        print(s,end=' '#山东大学 中国海洋大学
  • 多维数组转化成一维数组

  • s_names = [['北京大学','清华大学'],('南开大学','天津大学','天津师范大学'),['山东大学','中国海洋大学']]
    from itertools import chain
    list(chain.from_iterable(s_names))
    print(list(chain.from_iterable(s_names)))  # 将多维数组转换成一维数组
    # 输出结果为:['北京大学', '清华大学', '南开大学', '天津大学', '天津师范大学', '山东大学', '中国海洋大学']
  • 列表推倒式

    所谓的列表推导式,就是指的轻量级循环创建列表

    1. 基本的方式

  • list = [x for in range(6)] 
    print(list# [0, 1, 2, 3, 4, 5]


    2. 在循环的过程中使用if

    list = [x for in range(6if x%2==0]
    print(list#[0, 2, 4]


    3. 2个for循环

    list = [(x,y) for in range(6if x%2==0 for in range(6if y%2!=0]
    print(list#[(0, 1), (0, 3), (0, 5), (2, 1), (2, 3), (2, 5), (4, 1), (4, 3), (4, 5)]


    4. 3个for循环

    list = [(x,y,z) for in range(6if x%2==0 for in range(6if y%2!=0 for in range(2)]
    print(list
    #[(0, 1, 0), (0, 1, 1), (0, 3, 0), (0, 3, 1), (0, 5, 0), (0, 5, 1), 
    # (2, 1, 0), (2, 1, 1), (2, 3, 0), (2, 3, 1), (2, 5, 0), (2, 5, 1), 
    # (4, 1, 0), (4, 1, 1), (4, 3, 0), (4, 3, 1), (4, 5, 0), (4, 5, 1)]