python之08-list列表

详细请参考:https://www.cnblogs.com/Neeo/articles/11212368.html

1、列表的基本操作

1>创建列表

在Python中,用一对中括号[]来表示列表(list),用,分割列表内的每个元素。

li = []
print(li)  # []
print(type(li))  # <class 'list'>
print(list('dsdfgfrwe'))  # ['d', 's', 'd', 'f', 'g', 'f', 'r', 'w', 'e']
print(list(range(10)))  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(1,11))) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(range(1,11,2))) #[1, 3, 5, 7, 9]

练习:打印1--100之间的奇数

for i in range(1,101,2):
    print(i) 
2>列表的合并(拼接):+

合并(拼接)就是将两个列表合为一个新列表,原有列表不变。

li_1 = [1, 2, 3]
li_2 = ['a', 'b', 'c']
li_3 = li_1 + li_2
print(li_3)  # [1, 2, 3, 'a', 'b', 'c']
3>列表的重复

重复可以理解为将原列表复制指定次数,然后相加得到一个新的列表。

li_1 = [1, 2, 3]
li_2 = li_1 * 3
print(li_2)  # [1, 2, 3, 1, 2, 3, 1, 2, 3]
4>列表成员资格判断:in,not in
li = ['a', 'b', 'we', 2, 5]
print('a' in li)  # True
print('w' not in li)  # True
print(5  not in li)  # False
print('we' in li)  # True
5>通过索引或切片取值
lis = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
# 从索引为3的值
print(lis[3])  # d
# 从指定索引位置开始取值
print(lis[3:])  # ['d', 'e', 'f', 'g']
# 取列表内的一段元素
print(lis[3:6])  # ['d', 'e', 'f']
# 每隔两个取一个
print(lis[1:6:2])  # ['b', 'd', 'f']
# 取索引为-2的元素
print(lis[-2])  # f
# 从左向右取,从0开始,取到倒数第二个之前的
print(lis[:-2])  # ['a', 'b', 'c', 'd', 'e']
# 反转列表
print(lis[::-1])  # ['g', 'f', 'e', 'd', 'c', 'b', 'a']
6>for循环取值
lis = [ 'e', 'f', 'g']
for i in lis:
    print(i)
    
#执行结果
e
f
g
7>列表元素更新
lis = [ 'e', 'f', 'g']
print(lis,id(lis))   #['e', 'f', 'g'] 2365512770120
lis[2]='wwj'
print(lis,id(lis))  #['e', 'f', 'wwj'] 2365512770120

注:通过指定的索引修改列表中对应的元素,并且通过打印结果发现,当列表内的元素被修改后,列表的内存地址不变。

8>删除列表(元素)
li = ['b', 'a', 'c', 'f', 'd']
del li[0], li[2]
print(li)  # ['a', 'c', 'd']

2、列表的常用方法

2.1 list.append(obj)

将一个对象(元素)追加到列表的末尾,并且是原地操作列表,没有返回值

li =[1,2]
li.append('abc')
print(li)   #[1, 2, 'abc']
2.2 list.insert(index,obj)

将一个对象(元素)插入到列表的指定索引的前面,并且是原地操作列表,没有返回值

li = ['a', 'b', 'c', 'd']
li.insert(1, 1)
print(li)  # ['a', 1, 'b', 'c', 'd']

注:在指定索引的前面插入一个元素,后面的元素都要往后移动一位,如果列表长度很长的话,会对性能有所影响。

2.3 list.pop([obj])

移除列表中的指定索引位置的元素,若不指定索引,默认移除列表尾部的元素,并且将列表返回

li = ['a', 'b', 'c', 'd']
li.pop()  # 不指定默认移除最后一个
print(li)  # ['a', 'b', 'c']
print(li.pop(0))  # 移除指定的元素   a
print(li)  # ['b', 'c']
2.4 list.remove(obj)

删除列表中的指定元素,不指定或指定元素不存在报错,而且仅是删除操作,没有返回值。

li = ['a', 'b', 'c', 'd']
li.remove('a')
li.remove('c')
print(li)  #['b', 'd']
li.remove(1)  #ValueError: list.remove(x): x not in list

注:list.remove(obj)和list.pop([obj])的区别?

  • list.remove(obj)只能通过元素删除,不能通过索引删除
  • list.pop([obj])只能通过索引删除
2.5 list.reverse()

反转列表,并没有参数和返回值,只是在原地对列表中的元素进行反转。

li = ['b', 'a', 'c', 'f', 'd']
print(li[::-1])  # ['d', 'f', 'c', 'a', 'b']
li.reverse()
print(li)  # ['b', 'a', 'c', 'f', 'd']
2.6 list.sort(key=None, reverse=False)

原地对列表进行排序,key是自定义的排序算法,此函数在每次元素比较时被调用,reverse表示排序方式,默认的false是按照升序进行排序的,当reverse=True时,排序结果为降序。

li = ['b', 'a', 'c', 'f', 'd']
li.sort()  # 顺序,['a', 'b', 'c', 'd', 'f']
print(li)
li.sort(reverse=True)  # 倒序,['f', 'd', 'c', 'b', 'a']
print(li)

注:sorted(key=None, reverse=False)函数,它是Python内置的对于所有序列类型进行排序的函数,而不像sort()方法是列表独有的排序方法。
二者区别是:

  • sort方法仅能对列表进行原地排序,没有返回值。
  • sorted函数对所有序列类型进行排序,并且并不是原地排序,它会返回排序结果,也就是说我们可以通过一个变量接收排序结果。

3、列表总结

3.1 列表中常用的操作符
操作符(表达式)描述重要程度
+合并**
*重复**
in成员资格****
for i in [1, 2, 3]:print(i)迭代*****
list[2]索引取值*****
list[start:stop:step]、list[::-1]切片(截取)*****
3.2 列表中的常用方法:
方法描述重要程度
list.append(obj)列表添加元素到末尾*****
list.insert(index,obj)列表添加元素到指定位置*****
list.pop(obj)删除列表元素*****
list.remove()删除列表元素*****
list.reverse()反转列表的元素****
list.sort()排序***
list(seq)将序列转换为列表*****
list.extend(seq)列表末尾追加多个值***
list.count(obj)统计某个字符在列表内出现的次数****
list.index(obj)找出指定元素的第一个匹配项的索引位置***
3.3 可以应用于列表的其他置函数或者声明语句
函数描述重要程度
len(list)返回列表的元素个数*****
max(list)返回列表内最大的元素**
min(list)返回列表内最小的元素**
cmp(list1, list2)比较两个列表的元素**
del obj1, obj2删除列表的元素****

练习题:

1>写代码,有如下列表,按照要求实现每一个功能
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
#   计算列表的长度并输出
print("列表的长度:{}".format(len(li)))
#   列表中追加元素"seven",并输出添加后的列表
li.append('seven')
print("列表中追加元素'seven'之后,显示为:{}".format(li))
#   请在列表的第1个位置插入元素"Tony",并输出添加后的列表
li.insert(0, 'Tony')
print("列表的第1个位置插入元素'Tony',显示为:".format(li))
#   请修改列表第2个位置的元素为"Kelly",并输出修改后的列表
li[2] = 'Kelly'
print("修改列表第2个位置的元素为'Kelly',显示为:".format(li))
#   请将列表l2=[1,"a",3,4,"heart"]的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
l2 = [1, "a", 3, 4, "heart"]
print(li + l2)
#   请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
s = "qwert"
print(li + list(s))
#   请删除列表中的元素"ritian",并输出添加后的列表
li.remove("ritian")
print(li)
#   请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
new_li = li[2]
li.remove(new_li)
print("列表中的第二个元素:{}".format(new_li))
print(li)
#   请删除列表中的第2至4个元素,并输出删除元素后的列表
new_li = li[2: 4]
print("第2至4个元素:{}".format(new_li))
for item in new_li:
    li.remove(item)
print("删除第2至4个元素之后的列表:{}".format(li))
#   请将列表所有得元素反转,并输出反转后的列表
li.reverse()
print(li)
#   请计算出"alex"元素在列表li中出现的次数,并输出该次数。
print(li.count("alex"))
2>写代码,有如下列表,利用切片实现每一个功能
liqs = [1, 3, 2, "a", 4, "b", 5, "c"]
#   通过对li列表的切片形成新的列表liq1,liq1 = [1,3,2]
print(liqs[:3])
#   通过对li列表的切片形成新的列表liq2,liq2 = ["a",4,"b"]
print(liqs[3:6])
#   通过对li列表的切片形成新的列表liq3,liq3 = ["1,2,4,5]
print(liqs[::2])
#   通过对li列表的切片形成新的列表liq4,liq4 = [3,"a","b"]
print(liqs[1:6:2])
#   通过对li列表的切片形成新的列表liq5,liq5 = ["c"]
print(liqs[len(liqs) - 1:])
#   通过对li列表的切片形成新的列表liq6,liq6 = ["b","a",3]
print(liqs[::-1][2::2])

扩展:list递归调用

1>将列表中的数字3变成字符串"100"。

lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]

def fun_str(li):
    #定义变量从0开始
    num = 0
    for item in li:
        # 判断是否是列表
        if isinstance(item, list):
            return fun_str(item)
        else:
            if item == 3:
                li[num] = 100
        num += 1

#调用函数
fun_str(lis)
print(lis)      

#执行结果
[2, 100, 'k', ['qwe', 20, ['k1', ['tt', 100, '1']], 89], 'ab', 'adv']

2>将列表lis中的"tt"变成大写。

# # 方法1:能实现,但嵌套特别多的时候,就很麻烦,并且不灵活
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
lis[3][2][1][0] = lis[3][2][1][0].upper()
print(lis)   
#执行结果:[2, 3, 'k', ['qwe', 20, ['k1', ['TT', 3, '1']], 89], 'ab', 'adv']

# 方法2:递归循环
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]

def fun_str(li):
    #定义变量从0开始
    num = 0
    for item in li:
        #判断是否是列表
        if isinstance(item, list):
            return fun_str(item)
        else:
            if item == "tt":
                li[num] = li[num].upper()
        num += 1

#调用函数
fun_str(lis)
print(lis)
#执行结果
[2, 3, 'k', ['qwe', 20, ['k1', ['TT', 3, '1']], 89], 'ab', 'adv']

未完……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值