"""
#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])