如何在 Python 中将第一行与每个剩余行连接起来,第二行与每个剩余行下方连接 7 个循环?

How to concatenate first row with each remaining rows and second row with below each remaining rows for 7 cycles in Python?

我一直在想一些不同的连接解决方​​案

  1. 用每一行迭代第一行直到最后 (n)。
  2. 在第 1 步之后,用剩余的每一行迭代第二行。所以在第 3 行直到 n(最后一行)-1 被称为第一个周期。
  3. 类似于第二个循环,它是前两行与第 3 行的组合。

下面是 示例输出,我想将其加载到 ExcelCSV 当我输入 ['A','B','C','D','E','F','G'] .

1_cycle     2_cycle     3_cycle     4_cycle       5_cycle         6_cycle
 A&B          A,B&C     A,B,C&D    A,B,C,D&E     A,B,C,D,E&F    A,B,C,D,E,F&G
 A&C          A,B&D     A,B,C&E    A,B,C,D&F     A,B,C,D,E&G    
 A&D          A,B&E     A,B,C&F    A,B,C,D&G     B,C,D,E,F&G    
 A&E          A,B&F     A,B,C&G    B,C,D,E&F        
 A&F          A,B&G     A,B,C&E    B,C,D,E&G        
 A&G          A,C&D     A,B,C&F    C,D,E,F&G        
 B&C          A,C&E     A,B,C&G         
 B&D          A,C&F     A,B,C&F         
 B&E          A,C&G     A,B,C&G         
 B&F          A,D&E     B,C,D&E         
 B&G          A,D&F     B,C,D&F         
 C&D          A,D&G     B,C,D&G         
 C&E          A,E&F     C,D,E&F         
 C&F          A,E&G     C,D,E&G         
 C&G          A,F&G     D,E,F&G         
 D&E          B,C&D             
 D&F          B,C&E             
 D&G          B,C&F             
 E&F          B,C&G             
 E&G          C,D&E             
 F&G          C,D&F             
              C,D&G             
              D,E&F             
              D,E&G             
              E,F&G

至此,我能够破解第一个循环。只是到了第二个周期和第三个周期的时候我遇到了麻烦

目前,我有下面的代码在第一个周期工作。

import pandas as pd
import time
import os
import csv

links=['A','B','C','D','E','F','G']
len = len(links)

A=0
B=1
csvfile = open('permutation_loop.csv', 'a',encoding='utf-8')
csvwriter = csv.writer(csvfile)

for i in links:
    first = i
    A+=1
    #print(first)
    for j in links[A:]:
        second = j
        B+=1
        first_cycle = first+second
        #print(second)
        #csvwriter.writerow([first_cycle.strip()])
        for k in links[B:]:
            third = k
            #print(third)
            second_cycle = first+second+third
            print(second_cycle)
            csvwriter.writerow([first_cycle,second_cycle])
import csv


def one_cycle(original_inputs, previous_step):
    for i, x in previous_step:
        for j in range(i + 1, len(original_inputs)):
            yield (j, x + [original_inputs[j]])


def many_cycles(original_inputs, num_cycles):
    strings = [(i, [letter]) for i,letter in enumerate(original_inputs)]
    for i in range(num_cycles):
        strings = list(one_cycle(original_inputs, strings))
        yield (letter for index, letter in strings)


def insert_comma_ampersand(inp):
    # transforms ['A','B','C','D'] to 'A,B,C&D'
    comma_part = ','.join(inp[:-1])
    return f'{comma_part}&{inp[-1]}'


def make_permutations_csv(letters, num_cycles):
    csv_file = open('permutation_loop.csv', 'w', encoding='utf-8')
    csv_writer = csv.writer(csv_file, lineterminator='\n')

    csv_writer.writerow([f'{i+1}_cycle' for i in range(num_cycles)])

    columns = list(many_cycles(letters, num_cycles))
    while not all(column is None for column in columns):
        row = []
        for i, column in enumerate(columns):
            if column is None:
                row.append('')
                continue

            try:
                row.append(insert_comma_ampersand(next(column)))
            except StopIteration:
                row.append('')
                columns[i] = None
        csv_writer.writerow(row)

    csv_file.close()


make_permutations_csv(['A', 'B', 'C', 'D', 'E', 'F', 'G'], 6)