python - 在元组中交换元素 - 足球日历生成器
问题描述
这是我的代码:
n = int(len(teams_names) / 2)
rounds = []
for i in range(len(teams_names) - 1):
t = teams_names[:1] + teams_names[-i:] + teams_names[1:-i] if i else teams_names
rounds.append(list(zip(t[:n], reversed(t[n:]))))
one_round_length = len(rounds)
list(rounds)
for i in range(len(rounds)):
one_round = rounds[one_round_length-i-1]
for j in range(len(one_round)):
one_round[j][0], one_round[j][1] = one_round[j][1], one_round[j][0]
rounds.append(one_round)
但我有 TypeError: 'tuple' object does not support item assignment in the line:
one_round[j][0], one_round[j][1] = one_round[j][1], one_round[j][0]
代码是创建足球比赛日历。在第一个“回合”中,创建团队的随机对。在第二个“回合”中,我想反转主客团队对。
例如,没有反向我有:
[('Atletico Madrid', 'Sevilla FC'), ('Villareal CF', 'Athletic Club')]
[('Atletico Madrid', 'Villareal CF'), ('Sevilla FC', 'Athletic Club')]
[('Atletico Madrid', 'Athletic Club'), ('Sevilla FC', Villareal CF')]
[('Atletico Madrid', 'Athletic Club'), ('Sevilla FC', Villareal CF')]
[('Atletico Madrid', 'Villareal CF'), ('Sevilla FC', 'Athletic Club')]
[('Atletico Madrid', 'Sevilla FC'), ('Villareal CF', 'Athletic Club')]
我希望有:
[('Atletico Madrid', 'Sevilla FC'), ('Villareal CF', 'Athletic Club')]
[('Atletico Madrid', 'Villareal CF'), ('Sevilla FC', 'Athletic Club')]
[('Atletico Madrid', 'Athletic Club'), ('Sevilla FC', Villareal CF')]
[('Athletic Club', 'Atletico Madrid'), ('Villareal CF', Sevilla FC')]
[('Villareal CF', 'Atletico Madrid'), ('Athletic Club', 'Sevilla FC')]
[('Sevilla FC', 'Atletico Madrid'), ('Athletic Club', 'Sevilla FC')]
解决方案
如果您有以下列表
rounds = [
('Atletico Madrid', 'Sevilla FC'), ('Villareal CF', 'Athletic Club'),
('Atletico Madrid', 'Villareal CF'), ('Sevilla FC', 'Athletic Club'),
('Atletico Madrid', 'Athletic Club'), ('Sevilla FC', 'Villareal CF'),
('Atletico Madrid', 'Athletic Club'), ('Sevilla FC', 'Villareal CF'),
('Atletico Madrid', 'Villareal CF'), ('Sevilla FC', 'Athletic Club'),
('Atletico Madrid', 'Sevilla FC'), ('Villareal CF', 'Athletic Club')]
应用以下代码并打印
reversed_rounds = [(y,x) for x,y in rounds]
print(reversed_rounds)
输出:
[('Sevilla FC', 'Atletico Madrid'), ('Athletic Club', 'Villareal CF'),
('Villareal CF', 'Atletico Madrid'), ('Athletic Club', 'Sevilla FC'),
('Athletic Club', 'Atletico Madrid'), ('Villareal CF', 'Sevilla FC'),
('Athletic Club', 'Atletico Madrid'), ('Villareal CF', 'Sevilla FC'),
('Villareal CF', 'Atletico Madrid'), 'Athletic Club', 'Sevilla FC'),
('Sevilla FC', 'Atletico Madrid'), ('Athletic Club', 'Villareal CF')]
或者
试试下面的一个来得到你想要的
rounds = [
[('Atletico Madrid', 'Sevilla FC'), ('Villareal CF', 'Athletic Club')],
[('Atletico Madrid', 'Villareal CF'), ('Sevilla FC', 'Athletic Club')],
[('Atletico Madrid', 'Athletic Club'), ('Sevilla FC', 'Villareal CF')],
[('Atletico Madrid', 'Athletic Club'), ('Sevilla FC', 'Villareal CF')],
[('Atletico Madrid', 'Villareal CF'), ('Sevilla FC', 'Athletic Club')],
[('Atletico Madrid', 'Sevilla FC'), ('Villareal CF', 'Athletic Club')]
]
final_list = []
for li in rounds:
inner_list=[]
for tup in li:
x,y = tup
inner_list.append((y,x))
final_list.append(inner_list)
for item in final_list:
print(item)
输出:
[('Sevilla FC', 'Atletico Madrid'), ('Athletic Club', 'Villareal CF')]
[('Villareal CF', 'Atletico Madrid'), ('Athletic Club', 'Sevilla FC')]
[('Athletic Club', 'Atletico Madrid'), ('Villareal CF', 'Sevilla FC')]
[('Athletic Club', 'Atletico Madrid'), ('Villareal CF', 'Sevilla FC')]
[('Villareal CF', 'Atletico Madrid'), ('Athletic Club', 'Sevilla FC')]
[('Sevilla FC', 'Atletico Madrid'), ('Athletic Club', 'Villareal CF')]
推荐阅读
- websocket - socket io 客户端返回断开连接
- c++ - 使用win32 C++显示文件夹中的所有文件
- python - 在初学者函数递归练习中的 Python 输出中得到一些意想不到的“无”
- javascript - 如何使用 puppeteer 从节点 js 中接收的数据中删除换行符
- c - 在 C 中,如何将字符串存储在多维表中?
- python - Pycharm 中的 OPENCV 向我展示了一个数组值错误
- javascript - 为什么我的 script.js 文件不起作用,但 index.html 文件中的 JavaScript 代码起作用?
- excel - VBA为多列创建过滤器
- java - JPA 推断查询,带有一个参数以使用 OR 运算符进行搜索
- html - 使用thymeleaf从html中的svg图形分配点击值