【问题标题】:Lists in python with mapping with each other elementpython中的列表与其他元素的映射
【发布时间】:2017-12-20 03:52:44
【问题描述】:

我有一个这样的列表:['A,'B','C'] 我想要这样的输出

['AB','BC','CA']

我怎样才能得到这个输出。任何帮助表示赞赏。我从 for 循环中获取输入列表作为迭代。谢谢

【问题讨论】:

  • ['A', 'B', 'C', 'D'] 想要什么输出?

标签: arrays python-3.x list numpy anaconda


【解决方案1】:

zip 与列表理解一起使用,注意lst[1:] + lst[:1] 用于将列表滚动一个元素:

lst = ['A','B','C']
[x + y for x, y in zip(lst, lst[1:] + lst[:1])]
# ['AB', 'BC', 'CA']

【讨论】:

  • @Jeronimo 但 OP 要求 “与其他元素”,因此可以说除了 n=​​0 和 n=3 之外,这(以及大多数其他答案)给出了错误的结果.
【解决方案2】:

如果您不关心配对之间和配对之间的顺序:

import itertools
list(map(''.join, itertools.combinations(['A', 'B', 'C', 'D'], 2)))
['AB', 'AC', 'AD', 'BC', 'BD', 'CD']

如果你在乎:

L = list('ABXD')
N = len(L)
[L[i] + L[(i+d) % N] for d in range(1, N//2 + 1) for i in range(N if 2*d < N else d)]
['AB', 'BX', 'XD', 'DA', 'AX', 'BD']

为了让这个逻辑更加透明,这里是[], ['A'], ['A', 'B'], ... ['A', 'B', 'C', 'D', 'E', 'F']的答案:

[]
[]
['AB']
['AB', 'BC', 'CA']
['AB', 'BC', 'CD', 'DA', 'AC', 'BD']
['AB', 'BC', 'CD', 'DE', 'EA', 'AC', 'BD', 'CE', 'DA', 'EB']
['AB', 'BC', 'CD', 'DE', 'EF', 'FA', 'AC', 'BD', 'CE', 'DF', 'EA', 'FB', 'AD', 'BE', 'CF']

【讨论】:

  • 效果很好,我怎样才能得到这个:['ABC','ABD','ABE','BCD','BCE','CDE'] 从 ['A' 的列表中,'B','C','D','E'] 任何帮助表示赞赏,非常感谢
  • @Ara 你不想在那个列表中例如'ACD'吗?
  • 我明白了,非常感谢 :)
  • 是的,我需要,我只是用 3 代替了 2
  • 嗨,我有一个这样的列表 ['AC', 'AF', 'CF'] ,我希望输出是 [A,C,F] 例如输入是:[' AC', 'AD', 'CD'],我想要输出为 [A,C,D] 。什么是可以理解的获取方式。 TIA
【解决方案3】:

使用出色的 more-itertools 包的完全惰性版本

import itertools
from more_itertools import pairwise

def wrapped_pairwise(it):
    it = iter(it)
    try:
        element = next(it)
    except StopIteration:
        return iter(())
    return (a+b for a, b in pairwise(itertools.chain((element,), it, (element,))))

assert list(wrapped_pairwise("")) == []
assert list(wrapped_pairwise("A")) == ["AA"]
assert list(wrapped_pairwise("ABC")) == ["AB","BC","CA"]
assert list(wrapped_pairwise(["A","B","C"])) == ["AB","BC","CA"]

【讨论】:

    猜你喜欢
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多