Python 列表

本文介绍了Python中列表的基本操作,包括使用list函数创建列表,将不同类型数据转换为列表,利用切片进行更新和不等长替换,以及使用sort函数和sorted函数进行排序。同时,文章提到了列表的删除方法以及reversed函数用于反向遍历。最后,提供了一个实战练习,涉及对二维列表按特定元素排序并输出前m或n项。
摘要由CSDN通过智能技术生成

"""
#list函数
ls = list() #创建一个空列表
print(list())
print(list(str(1234)))#['1', '2', '3', '4']
print(list(range(5)))#[0, 1, 2, 3, 4]
print(list((1,2,3,4)))#[1, 2, 3, 4]

print(list('Lift is short, you need python'))#注意空格也算一个字符
#['L', 'i', 'f', 't', ' ', 'i', 's', ' ', 's', 'h', 'o', 'r', 't', ',', ' ', 'y', 'o', 'u', ' ', 'n', 'e', 'e', 'd', ' ', 'p', 'y', 't', 'h', 'o', 'n']

print('Lift is short, you need python'.split())
#['Lift', 'is', 'short,', 'you', 'need', 'python']
#split 拆分出的结果是一个列表


'''列表的更新'''
#切片赋值
ls = [22, 33, 44 ,5 , 6]
print(id(ls))

ls[3:] = [55,66]#可以使用切片赋值的方法更新列表中的元素,原理是先删除再替换
print(ls)#[22, 33, 44, 55, 66]
print(id(ls))

ls[3:] =[5,6,7,8,9] #切片赋值支持不等长替换。
print(ls)#[22, 33, 44, 5, 6, 7, 8, 9]
print(id(ls))#列表的更新是原地操作不改变对象地址。


ls[3::2] = [55,77,99]#当切片不连续时要求新列表与切片元素相等
print(ls)#[22, 33, 44, 55, 6, 77, 8, 99]
"""


'''列表的删除'''
#
#
#clear()方法

'''列表的排序'''
ls = ['我','你','他','她']
ls.sort(key = str)#['他', '你', '她', '我']
ls.sort(key = len)#['我', '你', '他', '她']
print(ls)


l = ['231','3','56','9','06']
print(l)
l.sort()
print(l)
l.sort(key = int)#int后面没有括号
print(l)
l.sort(key = lambda x:int(x))
print(l)

'''参数key可以指定项数来排序'''
Ls = [["a",18],["b",16],["c",17]]
print(Ls)
Ls.sort(key = lambda x:x[1])#指定第二项排序。
print(Ls)
#Python的内置函数sorted仅会输出排好的结果,不会改变原列表。

'''reversed()函数'''
ls = [1,2,3,4,5]
print(reversed(ls))#返回的是一个对象的地址
print(list(reversed(ls)))
print(reversed(ls))
print(list(reversed(ls)))#reversed函数并不会修改原函数。

练习:

'''
2、	有以下两个二维列表,第一个列表的元素是元组,请对其按列表元素的第 2 个元素值从小到大进行排序输出,输出其前 m 项;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
第二个列表的元素仍是列表,请对其分别按每个元素的第 1 和第 3 个元素值从小到大进行排序,输出其前 n 项。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
m 和 n 是由用户输入的非负整数,当 m 或 n 大于列表长度时,对整个列表进行排序输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
列表一: [('dungeon',7),('winterfell',4),('bran',9),('meelo',6)]‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬列表二: [[ 'Angle', '0121701100106',99], [ 'Jack', '0121701100107',86], [ 'Tom', '0121701100109',65], [ 'Smith', '0121701100111', 100], ['Bob', '0121701100115',77], ['Lily', '0121701100117', 59]] ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
'''

#列表一:
L1 = [('dungeon',7),('winterfell',4),('bran',9),('meelo',6)]
#列表二:
L2 = [[ 'Angle','0121701100106',99],[ 'Jack','0121701100107',86],
      [ 'Tom','0121701100109',65],[ 'Smith','0121701100111',100],
      ['Bob','0121701100115',77],['Lily','0121701100117',59]]

m = int(input("你要对列表一的前多少项排序:"))
n = int(input("你要对列表二的前多少项排序:"))

L1.sort(key = lambda x:x[1]) #指定第二项排序。
if m >= len(L1):
    print(L1)
else:
    print(L1[0:m])

if n >= len(L2):
    print("按第1项排序:" )
    print(sorted(L2,key = lambda x:x[0]))
    print("按第3项排序:" )
    print(sorted(L2,key = lambda x:x[2]))
else:
    print("按第1项排序:" )
    L3 = sorted(L2,key = lambda x:x[0])
    print(L3[0:n])
    print("按第3项排序:" )
    L4 = sorted(L2,key = lambda x:x[2])
    print(L4[0:n])

#python报错invalid character in identifier,
#意思就是“标识符中的无效字符”,检查下有没有字符是中文的,把中文字符改成英文字符再运行就可以了。

#Python的内置函数sorted仅会输出排好的结果,不会改变原列表。
#优化,巧用切片
#列表一:
L1 = [('dungeon',7),('winterfell',4),('bran',9),('meelo',6)]
#列表二:
L2 = [[ 'Angle','0121701100106',99],[ 'Jack','0121701100107',86],
      [ 'Tom','0121701100109',65],[ 'Smith','0121701100111',100],
      ['Bob','0121701100115',77],['Lily','0121701100117',59]]

m = int(input("你要对列表一的前多少项排序:"))
n = int(input("你要对列表二的前多少项排序:"))

L1.sort(key = lambda x:x[1]) #指定第二项排序。
print(L1[0:m])


print("按第1项排序:" )
L3 = sorted(L2,key = lambda x:x[0])
print(L3[0:n])
print("按第3项排序:" )
L4 = sorted(L2,key = lambda x:x[2])
print(L4[0:n])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烛火萤辉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值