簡體   English   中英

將for循環轉換為while循環時迭代“ int”值的問題

[英]Problems with iterating 'int' values when converting for loop to while loop

我的任務是創建一個程序,該程序使用while循環從文本文件中的2個關鍵字之間提取數據,並創建一個元組列表(日期作為列表,數據值作為整數)

例如

<begin step data>
2001-01-01,12776
2001-01-02,15128
<end step data>

將其提取為[('2001-01-01', 12776), ('2001-01-02', 15128)]格式

我首先使用for循環來解決它,以使其變得更容易,最后得到了這段代碼,為我提供了正確的答案:

def read_records_from_file(filename):

    """ bla """

    mylist = []
    line = open(filename).read()
    start = '<begin step data>'
    end = '<end step data>'
    startpos = line.find(start) + len(start)
    endpos = line.find(end, startpos)
    data = line[startpos:endpos]
    mylist.append(data.split())

    desired = []
    for element in mylist[0]:
        element = element.split(',')

        desired.append((element[0],int(element[1])))  

    return desired

這是將其轉換為while循環的方法:

def read_records_from_file(filename):

    """ bla """

    mylist = []
    line = open(filename).read()
    start = '<begin step data>'
    end = '<end step data>'
    startpos = line.find(start) + len(start)
    endpos = line.find(end, startpos)
    data = line[startpos:endpos]
    mylist.append(data.split())

    desired = []

    element = 0

    while element < len(mylist[0]):
        element = element.split(',')
        desired.append((element[0],int(element[1]))) 
        element += 1

    return desired

但這給了我一個錯誤的'int' object has no attribute 'split' 我很困惑如何將其更改為while循環,使它將其讀取為int而不是list

For語句可以在while轉換為:

element = 0
while element < len(mylist[0]):
    data = mylist[0][element].split(',')
    desired.append((data[0],int(data[1]))) 
    element += 1

您可以嘗試使用Python方式:

>>> data = "2001-01-01,12776 2001-01-02,15128"
>>> data = data.split()
>>> print data
['2001-01-01,12776', '2001-01-02,15128']
>>> final_data = []
>>> for d in data:
    temp = tuple(d.split(","))
    temp_tuple = (temp[0],int(temp[1]))
    final_data.append(temp_tuple)   

>>> print final_data
[('2001-01-01', '12776'), ('2001-01-02', '15128')]
st = "2001-01-01,12776 2001-01-02,15128"
final_list = []
for elem in st.split():
   date = elem.split(",")[0]
   data = elem.split(",")[-1]
   final_list.append((date, int(data)))
print final_list

您也可以使用此代碼生成輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM