我將如何從課堂上回傳一個串列,現在它只是回傳位置
class ListNode:
def __init__(self, val=[]):
self.val = val
def __iter__(self):
return iter(self.val)
def file_reader(file_path):
list_of_num = []
with open(file_path, "rt") as fout:
reader = csv.reader(fout, delimiter=",")
for line in reader:
list_of_num.append(line)
return list_of_num
def list_instances():
lists = file_reader(list_path)
final_list = ListNode(lists)
return final_list
if __name__=="__main__":
file_reader(list_path)
print(list_instances())
任何想法,我認為它與 iter 物件有關
uj5u.com熱心網友回復:
問題是這個ListNode類,它除了包裝一個常規之外什么都不做list(它還有一個與建構式中的可變默認引數相關的潛在錯誤,可能會在以后咬你),并且它不包裝__str__提供的方法印刷精美。
解決問題的最簡單方法是不使用ListNode:
def list_instances():
return file_reader(list_path)
現在您的print呼叫將收到 alist而不是 aListNode并且它將列印串列的內容。
你也可以file_reader()更簡單地寫成:
def file_reader(file_path):
with open(file_path, "rt") as fout:
return list(csv.reader(fout))
因為csv.reader是一個可迭代物件,傳遞一個可迭代物件list()會給你一個list它的內容;您不需要for自己撰寫回圈并單獨撰寫append每個元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/530615.html
