2017-11-18 80 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