我認爲,簡單的平面列表是錯誤的工作數據結構如果每個小寫字母與連續的大寫字母配對。如果將它變成一個兩元組列表即:
['A', 'b', 'A', 'c'] becomes [('A', 'b'), ('A', 'c')]
然後,如果你是通過在列表中的項目循環:
for item in list:
print(item[0]) # prints 'A'
print(item[1]) # prints 'b' (for first item)
要做到這一點:
input_list = ['A', 'b', 'A', 'c']
output_list = []
i = 0;
while i < len(input_list):
output_list.append((input_list[i], input_list[i+1]))
i = i + 2;
然後你就可以交換大寫字母的順序和小寫字母很容易使用列表理解:
swapped = [(item[1], item[0]) for item in list)]
編輯:
正如你可能已經爲每個大寫字母,你可以用一個列表中爲每個組,然後讓這些團體的名單不止一個小寫字母。
def group_items(input_list):
output_list = []
current_group = []
while not empty(input_list):
current_item = input_list.pop(0)
if current_item == current_item.upper():
# Upper case letter, so start a new group
output_list.append(current_group)
current_group = []
current_group.append(current_item)
然後你就可以扭轉的每個內部列表真的很容易:
[reversed(group) for group in group_items(input_list)]
你的問題很難理解。你能解釋一下大寫字母的意義嗎? –
你能詳細說明你需要什麼嗎?看看這兩個例子列表,我可以想到許多問題,其中最簡單的就是「將列表中的第一項移動到最後一個位置」... –
嗨,讓我們說大寫字母是像SMITH和小寫字母是像邁克和朱迪這樣的名字。 –