2017-11-18 81 views
0

我正在嘗試製作唯一號碼的列表,並且收到錯誤的輸出。製作唯一號碼列表

我想從文件中獲取每個唯一編號,其中每行有兩個數字: friends = ['4 6','4 7','4 8','5 9','6 8', '7','100','112'','78 44']

答案: user = ['4','6','7','8','44',' '78','100','112','114']

但是我的下面的代碼輸出user = ['0','1','2','4','5','6 '','7','8','9']而不是

我不確定如何讓我的代碼識別文件中的兩位和三位數字,基本上這是我的問題

user=[] 
for row in friends: 
    for column in row: 
      if column not in user and column.isdigit(): 
       user.append(column) 

    user.sort() 
print(user) 

*我不允許使用字典,套,雙端隊列,對開模塊

+1

號碼引號(像''4 6'')是字符串和Python處理它們的字符串,而不是數字(如'int'),當你閱讀文件內容,你需要在比較之前將值轉換爲int。 – davedwards

+0

@downshift我試圖做到這一點,但由於數字之間的空白,我得到一個錯誤,請問如何轉換值並維護結構? –

+0

@ h-g試試這兩個步驟:'temp = map(lambda x:x.split(),friends)',然後'numbers = [[int(letter)for x in letter] for x in temp]''。然後你可以打印(數字)輸出[[4,6],[4,7],[4,8],[5,9],[6,8],[7,8], [100,112],[112,114],[78,44]]'。這些列表現在是'int'列表,但是您可以根據自己的喜好來構造數字。 – davedwards

回答

1

事情是這樣的:

friends=['4 6', '4 7', '4 8', '5 9', '6 8', '7 8', '100 112', '112 114', '78 44'] 

def get_numbers(mylist): 
    nums = []       # create a new list 
    for i in mylist:      # for each pair in the friends list 
     nums.append(map(int, i.split())) # split each pair 
             # convert them to integers 
             # and append them to the new list 
    return nums       # return the new list 

numbers = get_numbers(friends)   # call the function with the old list 

那麼你可以做:

print(numbers) 
[[4, 6], [4, 7], [4, 8], [5, 9], [6, 8], [7, 8], [100, 112], [112, 114], [78, 44]] 

這應該幫助你開始。如果您遇到問題,請發表評論,我們可以更新它。

+0

我對地圖也不熟悉,請問意思是我需要創建兩個函數1)分裂每一對2)使數字整數 –

1

@downshift,我想我明白了!謝謝:)

def get_numbers(mylist): 
    nums = [] 
    for i in mylist:      
     nums.append(i.split()) 
     for i in range(len(nums)): 
      for j in range(len(nums[0])): 
       nums[i][j]= int(nums[i][j]) 
    return nums 

print(get_numbers(mylist)) 
+0

偉大的工作!是的,你知道了:) – davedwards