>

이 두 개의 중첩 된 목록을 제공하십시오. 예를 들어, a_lis 에서  그리고 b_lis  동일합니다. 그러나 a 를 나열하십시오.   b_lis 의 반대로 된 형식입니다 :

['Berries', 'grapes', 'lemon', 'Orange', 'Apple']

그리고

['Apple', 'Orange', 'lemon', 'grapes', 'Berries']

a_lisb_lis :

a_lis = [['Berries', 'grapes', 'lemon', 'Orange', 'Apple'],
 ['Apricots', 'peach', 'grapes', 'lemon', 'Orange', 'Apple'],
 [1, 'Melons', 'strawberries', 'lemon', 'Orange', 'Apple'],
 ['pumpkin', 'avocados', 'strawberries', 'lemon', 'Orange', 'Apple'],
 [3, 'Melons', 'strawberries', 'lemon', 'Orange', 'Apple']]

그리고

b_lis = [['Apple', 'Orange', 'lemon', 'grapes', 'Berries'],
 ['Apple', 'Orange', 'lemon', 'grapes', 'peach', 'Apricots'],
 ['Apple', 'Orange', 'lemon', 'strawberries', 'Melons', 1],
 ['Apple', 'Orange', 'lemon', 'strawberries', 'avocados', 'pumpkin'],
 ['Apple', 'Orange', 'lemon', 'strawberries', 'Melons', 3]]

목록이 다른 경우에만 가능한 모든 정렬로 2 차원 중첩 목록으로 정렬하려면 어떻게해야합니까? 예를 들어, ['Berries', 'grapes', 'lemon', 'Orange', 'Apple']['Apple', 'Orange', 'lemon', 'grapes', 'Berries']  그들은 동일하기 때문에 연결되어서는 안됩니다 (즉, 첫 번째 버전은 다른 버전과 반대 버전입니다). 이것이 예상 출력이 이 와 같은 방식입니다. (*) :

지금까지는 먼저 두 개의 목록이 동일한 위치에 있는지 알려주는 함수를 만들려고 노력했습니다.

def sequences_contain_same_items(a, b):
    for item in a:
        try:
            i = b.index(item)
        except ValueError:
            return False
        b = b[:i] + b[i+1:]
    return not b

그런 다음 목록을 반복했습니다 :

lis= []
for f, b in zip(a_lis, b_lis):
    #print(f, b)
    lis.append(f)
    lis.append(b)
print(lis)

그러나 정렬 출력 목록을 생성하는 방법을 얻지 못했습니다. 내가 이해하지 못하는 것은 제품 이 여기에 적용하기에 적합한 작업인지 여부입니다. (*) 를 생산하는 방법에 대한 아이디어 ?

  • 답변 # 1

    a_lis = [['Berries', 'grapes', 'lemon', 'Orange', 'Apple'],
     ['Apricots', 'peach', 'grapes', 'lemon', 'Orange', 'Apple'],
     [1, 'Melons', 'strawberries', 'lemon', 'Orange', 'Apple'],
     ['pumpkin', 'avocados', 'strawberries', 'lemon', 'Orange', 'Apple'],
     [3, 'Melons', 'strawberries', 'lemon', 'Orange', 'Apple']]
    reva = [k[-1::-1] for k in a_lis]
    m = [] 
    for i, v in enumerate(a_lis):
        for i1,v1 in enumerate(reva):   
            if i==i1:
                pass
            else:
                m.append(v)
                m.append(v1)
    print(m)
    
    

    <시간>

    보다 간결한 방법으로

    m = sum([[v, v1] for i, v in enumerate(a_lis) for i1,v1 in enumerate(reva) if i!=i1], [])
    
    

    <시간>

    m = [[v, v1] for i, v in enumerate(a_lis) for i1,v1 in enumerate(reva) if i!=i1]
    
    

관련 자료

  • 이전 python - lxml에서 요소의 직접적인 자식을 찾는 방법
  • 다음 node.js - 스트림 처리 지연 항목 변환