jay747:
私はこのようなリストのリストを持っています:
listofLists = [
['a', 'b', 'e'],
['a', 'd'],
['a', 'c'],
['a', 'b', 'c', 'e'],
['a', 'e', 'c', 'f']
]
どのように私は、垂直方向に、この要素のリストを読み、リネーム重複は、増分順序で要素に番号を付けることができますか?出力リストは同じ順序を維持しなければなりません。
例えば、「E」の最初の位置は、リスト内のインデックス1である[「」、「E」、「C」、「F」]、それはそのまま残るべきです。「E」の次の位置は、リスト内のインデックス2 [ '、「B」、「E」]「E1」と改名されるべきです。「E」の最後の位置は、「E3」と改名されなければならないリスト[ '、「B」、「C」、「E」]であります
必要な出力は次のようになります。
requiredOutput = [['a', 'b', 'e1'],
['a', 'd'],
['a', 'c'],
['a', 'b', 'c1', 'e2'],
['a', 'e', 'c1', 'f']]
私が試してみましたコードは、転置リストに照らしてチェックすることにより、以下のとおりです。私のコードは、リストの現在の要素を変更するので、しかし、それは私に必要な出力を与えるものではありません。これが問題文の正しいアプローチである場合、私は知りません。
transformedListOfTuples = list(zip_longest(*listofLists))
transformedListOfList= [list(x) for x in transformedListOfTuples]
for i in range(0, len(listofLists)):
for j in range(0, len(listofLists[i])):
pos = -1
for z in range(0, len(transformedListOfList)):
if listofLists[i][j] in transformedListOfList[z]:
pos = pos + 1
if pos == 0:
continue
elif pos > 0:
listofLists[i][j] = listofLists[i][j] + str(pos)
elif listofLists[i][j] not in transformedListOfList[z]:
continue
ロボモップ:
これはどう:
arr = [
['a', 'b', 'e'],
['a', 'd'],
['a', 'c'],
['a', 'b', 'c', 'e'],
['a', 'e', 'c', 'f']
]
listOfRepeated = []
max_len = 0
for i in range(0, len(arr)):
if max_len < len(arr[i]):
max_len = len(arr[i])
for j in range(0, max_len):
list_to_add = []
for i in range(0, len(arr)):
if j < len(arr[i]):
val = arr[i][j]
# For each iteration of `i`, you'll go down the group
if not val in list_to_add:
list_to_add.append(val)
count = listOfRepeated.count(val)
if count > 0:
arr[i][j] = ""+str(val)+""+str(count)
for element in list_to_add:
listOfRepeated.append(element)
for list in arr:
print(list)
出力:
['a', 'b', 'e1']
['a', 'd']
['a', 'c']
['a', 'b', 'c1', 'e2']
['a', 'e', 'c1', 'f']
説明:
j
水平に行くためのカウンタであり、i
グループをダウンするカウンタです。すべての要素は、現在ありますarr[i][j]
list_to_add
特定のグループごとにユニークな文字が含まれているリストであります
listOfRepeated
これまで見てきたすべての要素のリストです。一度listOfRepeatedであなたしている存在する場合、それはあなたの現在のグループが文字で最初のものであることを意味します。それが複数回ある場合は、その手段は、あなたは文字の後に番号を追加する必要があります。