python学习笔记1--数据结构之「列表」

列表的基本使用

1. 列表的定义
# 创建一个有内容的列表,数据项可以为str、int、float
list1 = ["a",'b',3,5.6,"hello"]

# 创建一个空列表
list2 = []
2. 取值和取索引
name_list = ["zhangsan", "lisi", "wangwu","zhangsan"]

# (1) 取值
# 如果列表索引超出范围,则会报错 IndexError: list index out of range
print(name_list[2])

# (2) 取索引 list.index(x[, start[, end]])
# 返回列表中第一个值为 x 的元素的索引。
print(name_list.index("zhangsan"))
# 未找到指定元素时,触发ValueError异常 ValueError: 'haha' is not in list
print(name_list.index("haha"))
# 可选参数 start 和 end 是切片符号,用于将搜索限制为列表的特定子序列。返回的索引是相对于整个序列的开始计算的,而不是 start 参数。
print(name_list.index("zhangsan",2,4))
3. 修改
name_list = ["zhangsan", "lisi", "wangwu","zhangsan"]
name_list[1] = "李四"
# 列表指定的索引超出范围,程序会报错 IndexError: list assignment index out of range
name_list[4] = "王小二"
4. 增加
#(1)list.append(x) 向列表的末尾追加数据
list_a = [1,2,3,4]
list_a.append(5)
print(list_a)

# (2)list.insert(i,x) 在指定位置插入元素。第一个参数是插入元素的索引
list_a.insert(0,8)
list_a.insert(len(list_a), 9)  # 等同于 a.append(9)
print(list_a)

# (3)list.extend(iterable) 用于在列表末尾一次性追加另一个序列中的多个值
list_a = [1,2,3,4,2]
list_b = [6,7,8]
list_a.extend(list_b)
print(list_a,list_b)
5. 删除
# (1)list.remove(x)  从列表中删除第一个值为 x 的元素
list_a = [1,2,3,4,2]
list_a.remove(2)
print(list_a)

# (2)list.pop([i])
# 删除列表中指定位置的元素,并返回被删除的元素。未指定位置时,a.pop() 删除并返回列表的最后一个元素。
# 方法签名中 i 两边的方括号表示该参数是可选的,不是要求输入方括号。
list_a = [1,2,3,4,2]
x = list_a.pop(2) # 不能写成list_a.pop([2])
y = list_a.pop() # 删除并返回列表的最后一个元素
print(list_a)
print(x,y)

#(3)list.clear() 删除列表里的所有元素
list_a = [1,2,3,4,2]
list_a.clear()
print(list_a)
6. 复制列表
# list.copy() # 复制一个副本

list_a = [1,2,3,4,2]
list_b = list_a # 直接赋值,是引用赋值,更改一个,另一个同样会变
list_c = list_a.copy() # 复制一个副本,原值和新复制的变量互不影响
print(list_b)
print(list_c)
list_a.append(5)
print(list_a)
print(list_b)
print(list_c)

列表的数据统计

# (1)list.count(x) # 返回列表中元素 x 出现的次数。
list_a = [1,2,3,4,2]
x =list_a.count(2)
print(x)

# (2)len(length 长度) 函数可以统计列表中元素的总数
list_len = len(list_a)
print("列表中包含 %d 个元素" % list_len)

列表的排序

# (1)list.sort(*, key=None, reverse=False) # 对原列表进行排序
list_a = [1,2,3,4,2]
list_a.sort() # reverse = False 升序(默认)
print(list_a)
# (2)# reverse = True 降序
list_a.sort(reverse=True) 
print(list_a)

# (3)list.reverse()  # 翻转列表中的元素(逆序)
list_a.reverse()
print(list_a)

列表的遍历

name_list = ["张三", "李四", "王五", "王小二"]
# 使用迭代遍历列表
for my_name in name_list:
    print("我的名字叫 %s" % my_name)

del关键字

name_list = ["张三", "李四", "王五","xiaoming","zhangsan","lisi"]
# (1) del 语句也可以从列表中移除切片,或清空整个列表(之前是将空列表赋值给切片)
# 提示:在日常开发中,要从列表删除数据,建议使用列表提供的方法
del name_list[1]
print(name_list)
del name_list[2:4]
print(name_list)
del name_list[:]
print(name_list)
# (2) del 关键字本质上是用来将一个变量从内存中删除的
# 注意:如果使用 del 关键字将变量从内存中删除
# 后续的代码就不能再使用这个变量了
name = "小明"
del name
print(name) # 所以这里会报错

列表推导式

列表推导式创建列表的方式更简洁。常见的用法为,对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。

# 1. 例如想生成一个平方列表,可以使用for循环,也可以使用列表推导式

list_a1 = []
for i in range(10):
    list_a1.append(i ** 2)
print(list_a1)
list_a2 = [i**2 for i in range(10)]
print(list_a2)

list_b1 = []
for i in range(10):
    if i !=1:
        list_b1.append(i ** 2)
print(list_b1)
list_b2 = [i**2 for i in range(10) if i != 1]
print(list_b2)

# 嵌套循环
list_c1 = []
for i in range(10):
    for j in range(10):
        list_c1.append(i * j)
print(list_c1)
list_c2 = [i*j for i in range(10) for j in range(10)]
print(list_c2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值