Python列表学习笔记

1. 列表的创建

列表是Python的核心数据类型,可由数值、字符串、布尔值和空值等构成

  • 普通列表
a = [1,2,'s',None,True]
print(a,type(a))
[1, 2, 's', None, True] <class 'list'>
# 空列表
Null = []
Null
[]
# 列表中包含列表,即嵌套列表
a = [1,2,[2,3,4]]
print(a,type(a))
[1, 2, [2, 3, 4]] <class 'list'>
  • ranges生成器创建列表
    • range(start,end,step)
    • start起始数据,end结束数据,step设置步长(非必须参数,默认为1)
    • start、end、step数据类型都为int(整型),否则报错
range(1,2,1.1)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-71-8655ac74624c> in <module>()
----> 1 range(1,2,1.1)


TypeError: 'float' object cannot be interpreted as an integer
# 通过range()这个生成器新建一个range对象
r = range(1,9,2)
print(r,type(r))
# 创建的range对象也可以根据索引截取
print(r[:1],type(r[:1]))
# 通过list()函数可将range对象转为列表
lst = list(r)
print(lst,type(lst))
range(1, 9, 2) <class 'range'>
range(1, 3, 2) <class 'range'>
[1, 3, 5, 7] <class 'list'>
r = range(1,9,2)
lst = list(r)
print(lst,type(lst))
[1, 3, 5, 7] <class 'list'>
  • 动态列表生成
demo = [i+1 for i in range(10)]
a = [5,2,1]
b = [i+1 for i in a]

2. 列表的增加

  • 列表的连接(与字符串连接类似,都是通过+连接)
lst1 = ['a','b']
lst2 = [2]
lst1 + lst2 # 连接在末尾
['a', 'b', 2]
  • 指定位置插入元素
# 在第二个位置插入一个元素
demo_list.insert(int(指定位置,如1),value(插入的内容))
  • 列表的复制(与字符串复制相同,都是通过*复制)
lst1 * 2
['a', 'b', 'a', 'b']
  • 列表的追加
    • 在列表末尾添加新的一个对象
      • list.append()注意每次只能添加一个元素,一定是在列表末尾添加,该方法无返回值,但是会修改原来的列表。
    • 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
      • list.extend()注意每次只能添加一个序列,一定是在列表末尾添加,该方法无返回值,但是会修改原来的列表。

注意:extend输入的是一个列表,append输入的是单个对象

# append里的参数是一个对象,所以会直接加入列表末尾
lst = [1,2]
lst.append('hello')
lst
[1, 2, 'hello']
# extend里的参数是一个序列,字符串是序列,所以每个字母都会成为单独对象被加入列表
lst = [1,2]
lst.extend('hello')
lst
[1, 2, 'h', 'e', 'l', 'l', 'o']
lst = [2]
lst.append(['a','b'])
lst
[2, ['a', 'b']]
lst = [2]
lst.extend(['a','b'])
lst
[2, 'a', 'b']

3. 列表的删除

  • list.remove()方法:移除列表中某个值的第一个匹配项
  • del list[ ]语句:删除list的相应索引值。注意这里不需要圆括号!
  • list.clear():移除所有元素
  • list.pop(索引值):不添加则删除最后一个元素
lst = ['a', 'b', 'c']
lst.remove('a')
lst
['b', 'c']
lst = ['a', 'b', 'c']
del lst[0:2]
lst
['c']
lst = ['a', 'b', 'c']
lst.clear()
lst
[]
lst = ['a', 'b', 'c']
lst.pop(1)
lst
['a', 'c']

4. 列表的修改

列表的可变性,即列表可通过索引修改元素,或者通过增减元素来改变原列表

  • 修改元素的值
a = ['a', 'b', [2, 3]]
a[-1][0] = 'change'
a
['a', 'b', ['change', 3]]

5. 列表的查询

实质上与字符串的索引和切片类似

  • 列表的索引
lst = ['a','b',[2,3],5]
# 通过索引提取出2
print('正序索引结果:',lst[2][0],';逆序索引结果:',lst[-2][-2])
正序索引结果: 2 ;逆序索引结果: 2
  • 列表的切片:切片是一个左闭右开区间,即左可取到、右不可取到
# 提取第一个到第三个元素
print(lst[:3])
# 第二个到倒数第二个
print(lst[1:-1]) # 正逆序索引可结合使用
# 还可以通过设置步长进行切片
a = list(range(9))
a[1:6:3]
['a', 'b', [2, 3]]
['b', [2, 3]]
[1, 4]
  • 查询某个值第一个匹配项的索引位置(从左到右)
    • list.index(值,起始索引,终止索引),返回第一个匹配的索引值
lst = ['a','a',12,3,21,4,2,3]
# 终止索引取不到,如果不存在则会报错
lst.index(3,1,9)
3

6. 列表常用方法

  • 查看列表的长度,即列表中有多少个元素
# 嵌套的列表只算一个
lst = ['a','b',[2,3],5]
len(lst)
4
  • 纯数值数据列表的计算
    • 最大值:max(list)
    • 最小值:min(list)
    • 总 和:sum(list)
a = list(range(1,9))
print('a的最大值为:{};最小值为:{};总和为:{}'.format(max(a),min(a),sum(a)))
a的最大值为:8;最小值为:1;总和为:36
  • 统计某个值出现的次数
lst = ['a','a',12,3,21,4,2,3]
print(type(lst.count('a')),lst.count(12)) # 返回的次数为int型
<class 'int'> 1
  • 列表排序
    • 列表所有元素反转:list.reverse()
    • 列表内元素排序
      • sorted(list,key=None, reverse=False)
      • list.sort(key=None, reverse=False)
      • key:按照一定的规则进行排序,默认从小到大;reverse:是否反转序列,默认否
lst = [4,23,25,2,34,23,4,2]
lst.reverse()
lst
[2, 4, 23, 34, 2, 25, 23, 4]
lst = [4,23,25,2,34,23,4,2]
lst.sort()
lst
[2, 2, 4, 4, 23, 23, 25, 34]
lst = [4,23,25,2,34,23,4,2]
sorted(lst)
[2, 2, 4, 4, 23, 23, 25, 34]
  • 判断元素是否在列表中
lst = ['a', 'b', 'c']
print('a' in lst) # 在
print('d' not in lst) # 不在
True
True

7. 列表的简单应用

将8个苹果,随机放入3个篮子中

import random

# 8个苹果分别标记
apples = ['a','b','c','d','e','f','g','h']
# 定义需要放入的篮子
lanzi = [[],[],[]]

# 随机放入篮子
for i in apples:
    # 随机放入哪一个篮子,用下标索引来模拟放入
    c = random.randint(0,2) # 左闭右闭
    lanzi[c].append(i)

i = 0
for j in lanzi:
    print('lanzi%d的苹果有%d个'%(i,len(j)))
    i += 1
    for apple in j:
        print('%s'%apple,end='\t')
    print('\n')
    print('-*-'*10)
lanzi0的苹果有3个
a	f	h	

-*--*--*--*--*--*--*--*--*--*-
lanzi1的苹果有1个
b	

-*--*--*--*--*--*--*--*--*--*-
lanzi2的苹果有4个
c	d	e	g	

-*--*--*--*--*--*--*--*--*--*-
products = [["iphone" ,6888],["MacPro",14800],
            ["小米6",24991],["Coffee",31],
            ["Book", 60],["Nike",699]]
print('- '*5,'商品列表','- '*5)
num = 0
for i in products:
        print('%d      %s      %d'%(num,i[0],i[1]))
        num += 1
- - - - -  商品列表 - - - - - 
0      iphone      6888
1      MacPro      14800
2      小米6      24991
3      Coffee      31
4      Book      60
5      Nike      699
print('根据商品编号,添加购物车')
is_q = input('输入q退出,输入其它继续')
a = []
while is_q != 'q':
    i = eval(input('请输入商品编号'))
    a.append([i,products[i][0],products[i][1]])
    is_q = input('输入q退出')
    
print('- '*5,'商品列表','- '*5)  

pay_all = []
for i in a:
    print('%d      %s      %d'%(i[0],i[1],i[2]))
    pay_all.append(int(i[2]))
print('您一共消费%d元'%sum(pay_all))
根据商品编号,添加购物车
输入q退出,输入其它继续s
请输入商品编号2
输入q退出s
请输入商品编号1
输入q退出q
- - - - -  商品列表 - - - - - 
2      小米6      24991
1      MacPro      14800
您一共消费39791元
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

而又何羡乎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值