今天在一个老师的付费专栏做了15题,挑选了以下8个好用的记录保留,防止以后忘记
题目1: 反转列表[0,1,2,3,4,5,6,7]
l = [0,1,2,3,4,5,6,7]
# 解法1
print('解法1:', l[::-1])
# 解法2
l.reverse()
print('解法2:', l)
# 解法3
print('解法3:', reversed(l)))
解法2 要注意:l.reverse()是没有返回值得,它是直接对s本身进行了改变
题目2:从列表[True, 1, 0, ‘x’, None, ‘x’, False, 2, True]中删除元素’x’
l = [True, 1, 0, 'x', None, 'x', False, 2, True]
# 解法1
l1 = [i for i in l if i!='x']
print('解法1:', l1)
# 解法2
for i in range(l.count('x')):
l.remove('x')
print('解法2:', l)
题目3:删除列表中索引号为奇数的元素
l = list(range(10))
# 解法1
del l[1::2]
print('解法1:', l)
# 解法2
l = [for index, i in enumerate(l) if index % 2 == 0]
print('解法2:', l)
# 解法3
print('解法3:', l[::2])
# 解法4
for i in l[1::2]:
l.remove(i)
print('解法4:', l)
题目4:将列表[3, 0, 8, 5, 7]中大于5元素置为1,其余元素置为0
# 解法1
l = [3, 0, 8, 5, 7]
print('解法1:', [1 if i>5 else 0 for i in l])
# 解法2
for i in range(len(l)):
if l[i] > 5:
l[i] = 1
else:
l[i] = 0
print('解法2:', l)
题目5:遍历列表[‘x’, ‘y’, ‘z’], 打印每一个元素及其对应的索引号
l = ['x', 'y', 'z']
for index, i in enumerate(l):
print(index, i)
题目6:将列表[0,1,2,3,4,5,6,7,8,9]拆分为奇数组和偶数组两个列表
# 解法1 如果元素是非连续增长的情况下,此方法不可用
l = list(range(10))
print('偶数组:', l[::2])
print('偶数组:', l[1::2])
# 解法2
b = a = []
for i in range(len(l)):
if l[i] % 2 == 0:
a.append(l[i])
else:
b.append(l[i])
print(a, b)
题目7:分别根据每一行的首元素和尾元素大小对二维列表[[6,5],[3,7],[2,8]]排序
l = [[6,5],[3,7],[2,8]]
# 解法1
print('根据首元素排序:', sorted(l, keys=lambda x: x[0]))
print('根据尾元素排序:', sorted(l, keys=lambda x: x[-1]))
# 解法2
import numpy as np
data = np.array(l)
print('根据首元素排序:', data[data[:0].argsort()])
print('根据尾元素排序:', data[data[:-1].argsort()])
题目8:对列表[3,0,8,5,7]分别做升序和降序排列
# 解法1
l = [3,0,8,5,7]
l.sort()
print('升序: ', l)
l.sort(reverse=True)
print('降序: ', l)
# 解法2
l = sorted(l)
print('升序: ', l)
l = sorted(reverse=True)
print('降序: ', l)
# 解法3
l = sorted(l)
print('升序: ', l)
l.reverse()
print('降序: ', l)
解法三的思路 各位老铁有想到过吗?