如何在Python中将循环生成的变量值存储到列表中?
嘿,我懂你的困扰——每次循环里count和itemName都会被新值覆盖,之前找到的最长字符串就这么丢了对吧?要把所有循环生成的结果都存下来其实很简单,咱们只需要提前准备一个空列表,每次找到符合条件的内容就把它加进去就行~
先给你指出原代码里的两个小问题:
- 变量名有点混乱:一会儿用
counter,一会儿用count,容易搞混; - 索引写反啦:原代码里
items[i][j]其实应该是items[j][i],因为你的tableData里每个子列表是一行,j是行索引,i是列索引,这样才能正确遍历每一列的元素。
下面是修改后的代码,我给你加了详细的注释:
def printTable(items): # 先创建一个空列表,专门用来存每一列的最长字符串信息 stored_results = [] # 遍历每一列(items[0]的长度就是总列数) for column_idx in range(len(items[0])): # 初始化当前列的最长长度和对应字符串 max_length = 0 longest_item = "" # 遍历每一行,检查当前列的每个元素 for row_idx in range(len(items)): current_item = items[row_idx][column_idx] current_len = len(current_item) # 如果当前元素更长,就更新最长记录 if current_len > max_length: max_length = current_len longest_item = current_item # 把当前列的结果存到列表里,用字典格式更清晰 stored_results.append({ "列序号": column_idx + 1, "最长字符串": longest_item, "长度": max_length }) # 同时打印当前列的结果(保留你原来的需求) print(f'第{column_idx+1}列的最长字符串是: {longest_item}; 它的长度是 {max_length}') # 最后把存储的所有结果返回,方便你后续使用 return stored_results tableData = [ ['apples','oranges','cherries','banana'], ['Alice','Bob','Carol','David'], ['dogs','cats','moose','goose'] ] # 调用函数,获取所有存储的结果 all_results = printTable(tableData) # 如果你想查看所有存下来的结果,直接打印就行 print("\n所有存储的结果:") for result in all_results: print(result)
这样修改后,每一列的最长字符串信息都会被存在stored_results列表里,再也不会被覆盖啦~你可以随时调用这个列表里的数据,比如做进一步处理或者保存起来。
内容的提问来源于stack exchange,提问作者user9867610
相关产品推荐
相关产品推荐

