我有一個列表(tableData)列表,我想返回一個新的List(cloneTable),它輸出原始列表中每個字符串的長度,以便我可以使用該函數找到最長的字符串longestString。我也想保留原始列表中的值。問題是,我的函數運行後,原始列表已被轉換爲長度。函數內部意外替換的列表值
我相信代碼可以更好(我還在學習),但我也想明白爲什麼有這個問題。我沒有分配tableData我正在傳遞來自tableData的值來分配給cloneTable。謝謝您的幫助!
#A list of lists
tableData = [
['apples','oranges','cherries','banana'], #6,7,8,6
['Alice','Bob','Carol','David'], #5,3,5,5
['dogs','cats','moose','goose'], #4,4,5,5
['car','train','helicopter','plane'] #3,5,10,5
]
#longestString function finds the longest string in each list of list
def longestString(table):
cloneTable = []
output = []
for v1 in range(len(table)):
cloneTable = cloneTable + [table[v1]]
for v1 in range(len(cloneTable)):
for v2 in range(len(cloneTable)):
cloneTable[v1][v2] = len(cloneTable[v1][v2])
cloneTable[v1].sort()
for v1 in range(len(cloneTable)):
output = output + [cloneTable[v1][-1]]
return output
##################################################################
for v1 in range(len(tableData)): #returns the list - OK
print(tableData[v1])
print(longestString(tableData)) #returns the longest strings - OK
for v1 in range(len(tableData)): #returns a list of string lengths - Not OK
print(tableData[v1])
更先進的解決方案可能[用於升在資料表最大值(1,1-鍵= LEN)]是這樣''這利用了[MAX](HTTPS的: //docs.python.org/3/library/functions.html#max)函數和一個名爲[list comprehension]的概念(http://www.secnetix.de/olli/Python/list_comprehensions.hawk) –