【问题标题】:can someone help to correct a reversal for a list within lists?有人可以帮助纠正列表中列表的反转吗?
【发布时间】:2021-03-26 15:09:15
【问题描述】:

我正在尝试扭转以下情况:

z = list(reversed(i) for i in zip(['FRED', 'CORWILL'], ['WILFRED', 'CORWILL'], ['RAPHAEL', 'CORWILL'], ['ALFRED', 'CORWILL'], ['BARNEY', 'TORNBULL'], ['BETTY', 'TORNBULL'], ['BJON', 'TORNBULL']))

print(z)

所以基本上,我需要 ['FRED', 'CORWILL'] 变成 ['CORWILL','FRED] 并且所有其他列表都一样。

有人可以帮忙修改上面的代码,而不是编写全新的代码来实现所需的输出吗?

谢谢

【问题讨论】:

  • 不要使用zip()
  • 您是如何发现自己拥有这么多独立列表的?它们实际上不在一个更大的列表中,这似乎很奇怪。
  • 你为什么不直接写z = thedatathewayyouactuallywantit?顺便说一句,不清楚你想要它。

标签: python list reverse


【解决方案1】:

你把问题复杂化了,你使用的反向函数已经为你解决了!

print(list(reversed(["FRED", 'CORWILL'])))

对于多重情况,您只需对每个名称列表重复该过程。

print(list(list(reversed(names)) for names in [['FRED', 'CORWILL'], ['JOHN', 'MARIA']]))

请注意,我使用了list(reversed(i)) 而不是reversed(i),因为 reversed 返回一个生成器,而不是我们在打印时可以看到的实际列表。以下是您执行此操作时的输出:

[]

【讨论】:

  • 已添加! -----
  • 感谢您的回答,但我的输入是 [['FRED', 'CORWILL'], ['WILFRED', 'CORWILL'], ['RAPHAEL', 'CORWILL'], [' ALFRED', 'CORWILL'], ['BARNEY', 'TORNBULL'], ['BETTY', 'TORNBULL'], ['BJON', 'TORNBULL']] - 这是否意味着我需要 7 个 list(list(列表(....)))))))?
  • 我相信您的代码适用于 [['FRED', 'CORWILL'], ['JOHN', 'MARIA']],但是如果我们有 [['FRED', 'CORWILL '], ['WILFRED', 'CORWILL'], ['RAPHAEL', 'CORWILL']] - 这是否意味着我需要 list(list(list(...)))?
  • 这就是我添加 for 循环的原因,因为我需要反转以应用于较大列表中的每个较小列表(两个项目的列表)。
  • 第二个代码块适用于 +1 列表!
【解决方案2】:

你不需要zipreversedlist...

initial = [
    ['FRED', 'CORWILL'],
    ['WILFRED', 'CORWILL'],
    ['RAPHAEL', 'CORWILL'],
    ['ALFRED', 'CORWILL'],
    ['BARNEY', 'TORNBULL'],
    ['BETTY', 'TORNBULL'],
    ['BJON', 'TORNBULL']
]

你可以这样做:

swapped = [[b, a] for [a, b]  in initial]

甚至这个:

swapped = [sublist[::-1] for sublist  in initial]

【讨论】:

    猜你喜欢
    • 2017-06-12
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 2021-08-29
    • 1970-01-01
    相关资源
    最近更新 更多