1. 程式人生 > >Python重組列表,使列表中 每個成員 都與 其他成員 相臨

Python重組列表,使列表中 每個成員 都與 其他成員 相臨

比如說列表中有Kenn、Tom、Jerry、Jenifer、Candy,想讓其中每個人都與其他四個人相鄰:

import numpy as np

SI = np.array([], dtype=int)
for i in range(5):
    SI = np.append(SI, i+1)
print(SI)   # [1 2 3 4 5]

people = ['Kenn', 'Tom', 'Jerry', 'Jenifer', 'Candy']


def not_exist(arr, array):
    for i in range(len(array)):
        if arr[0] == array[i]:
            if i != len(array)-1:
                if arr[1] == array[i+1]:
                    return False
    return True


def algorithm1_real(SI):
    SIS = [1]
    SI_new = [SI[0]]
    i = 1
    j = i + 1
    while i != j:
        if j > len(SI):
            j = 1
        elif not_exist([i, j], SIS) and not_exist([j, i], SIS):
            SI_new.append(SI[j-1])
            SIS.append(j)
            i = j
            j = j + 1
        else:
            j = j + 1
    return SI_new


print(algorithm1_real(SI))
# [1, 2, 3, 4, 5, 1, 3, 5, 2, 4, 1]
print(algorithm1_real(people))
# ['Kenn', 'Tom', 'Jerry', 'Jenifer', 'Candy', 'Kenn', 'Jerry', 'Candy', 'Tom', 'Jenifer', 'Kenn'] 

輸出結果:

['Kenn', 'Tom', 'Jerry', 'Jenifer', 'Candy', 'Kenn', 'Jerry', 'Candy', 'Tom', 'Jenifer', 'Kenn']

Kenn來說,他與其餘四人Tom、Jerry、Jenifer、Candy均相鄰。

對Jerry也是如此: