List Comprehension

Practice:

  1. List Comprehensions

知识点:

  1. list comprehensions 在列表推导式中for i in list_test 后面不需要加 : 常见的使用姿势:

    1
    [ [ i, j] for i in range( x + 1) for j in range( y + 1) if ( ( i + j ) != n )

  2. Nested Lists

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
marksheet = []
for _ in range(0,int(input())):
marksheet.append([input(), float(input())])

# 先得到 second lowest 的分数

# 先对分数去重
deduplicated_mark = set([mark for name, mark in marksheet])

# 对分数排序
sorted_ded_mark = sorted(list(deduplicated_mark))

# 获得第二的低分
second_lowest = sorted_ded_mark[1]

# 对总表进行排序
sorted_marksheet = sorted(marksheet)

# 循环遍历,得到总表中分数等于 second lowest 的名字
print('\n'.join([name for name, mark in sorted_marksheet if mark == second_lowest]))

知识点:

  1. 将列表转换为 set 去重

  2. list comprehensions

  3. join 在输出换行等分隔符时的用法

  4. list.sort(key=..., reverse=...)

    By default, sort() doesn't require any extra parameters. However, it has two optional parameters: reverse - If true, the sorted list is reversed (or sorted in Descending order) key - function that serves as a key for the sort comparison usage:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # take second element for sort
    def takeSecond(elem):
    return elem[1]

    # random list
    random = [(2, 2), (3, 4), (4, 1), (1, 3)]

    # sort list with key
    random.sort(key=takeSecond)

    # print list
    print('Sorted list:', random)