g = [list(input().strip()) for _ in range(n)]:
- 执行
n
次循环,每次循环都会:- 从用户输入中读取一行数据。input()
- 去除该行数据两端的空白字符。strip()
- 将这行数据转换为字符列表(每个字符是列表的一个元素)。
- 最终返回一个包含 n 个列表的列表,每个内部列表是用户输入的每一行的字符组成的列表。
sort(reverse=True, key=lambda x: x[0]) :
按照每个元素的第一个值进行降序排序。
其中,key=lambda x: x[0]
表示对每个元素(假设是元组或类似对象)提取第一个元素来进行排序,而 reverse=True
则表示按降序排列。
import collections
1. deque
— 双端队列:可以在队列两端高效地插入和删除元素的数据结构。它的插入和删除操作在两端都为 O(1) 时间复杂度,而普通的 list
在开头插入和删除元素时是 O(n) 的。
append(x)
:在队右端添加x
。appendleft(x)
:在队左端添加x
。pop()
:从队右删除并返回元素。popleft()
:从队左删除并返回元素。
2. Counter
— 计数器
Counter
是一个子类化的字典,用于统计对象的出现次数。比如计算某个元素的出现次数、返回最常见的元素等。
常见操作:
Counter(iterable)
:根据可迭代对象创建计数器。update(iterable)
:通过传入一个新的可迭代对象,更新计数器。most_common(n)
:返回出现次数最多的n
个元素。elements()
:返回所有的元素,按照计数器中的频率排列。
3. OrderedDict
— 有序字典
OrderedDict
是 dict
的一个子类,它保持字典元素的插入顺序。 允许按插入顺序操作字典中的元素。
常见操作:
move_to_end(key, last=True)
:将指定的键移动到字典的末尾(或者开头)。popitem(last=True)
:删除并返回字典中的一项,如果last=True
,返回最后一项。