【问题标题】:How to replace a value in a list如何替换列表中的值
【发布时间】:2014-02-01 08:23:37
【问题描述】:

程序要求用户输入 5 个唯一号码,如果该号码已经在列表中,则要求输入一个新号码。输入 5 个唯一号码后,显示列表

numbers = ['1','2','3','4','5']
count = 0
index = 0
while count <6:
    user = raw_input ("Enter a number: ")
    if user in numbers:
        print "not unique"
    if user not in numbers:
        print "unique"
        count += 1
        numbers = numbers.replace(index,user)
        index +=1
    print numbers

当程序到达替换方法时,它会引发属性错误

【问题讨论】:

  • set type 可能对您有用,因为它会自动强制执行唯一性。当你尝试add一个项目到一个集合时,如果它已经在集合中,那么它没有效果。

标签: python list python-2.7


【解决方案1】:

你可以使用:

numbers[index] = user

列表没有replace() 方法。但是,字符串确实有替换方法。

如果您想在列表末尾附加一个数字,您可以使用append()

numbers.append(user)

如果你想在给定位置插入一个数字,你可以使用insert()(例如,位置0):

numbers.insert(0, user)

【讨论】:

    【解决方案2】:

    您不必在 Python 中初始化列表:

    numbers = []
    
    while len(numbers) != 5:
         num = raw_input('Enter a number: ')
         if num not in numbers:
             numbers.append(num)
         else:
             print('{} is already added'.format(num))
    
    print(numbers)
    

    【讨论】:

      【解决方案3】:

      你可以用下标符号替换它,像这样

      numbers[index] = user
      

      除此之外你的程序还可以改进,像这样

      numbers = []
      while len(numbers) < 5:
          user = raw_input ("Enter a number: ")
          if user in numbers:
              print "not unique"
          else:
              print "unique"
              numbers.append(user)
      print numbers
      

      【讨论】:

        【解决方案4】:

        如果您不关心数字的顺序,您可能应该查看集合。此外,如果您想使用数字而不是字符串,您应该将字符串转换为 int。我会写这样的。

        nums = set()
        
        while len(nums) < 5:
            try:
                nums.add(int(raw_input("Enter a number: ")))
            except ValueError:
                print 'That is not a number!'
            print 'Numbers entered: {}'.format(', '.join(str(x) for x in nums))
        

        输出:

        Enter a number: 5
        Numbers entered: 5
        Enter a number: 3
        Numbers entered: 3, 5
        Enter a number: 1
        Numbers entered: 1, 3, 5
        Enter a number: 7
        Numbers entered: 1, 3, 5, 7
        Enter a number: 9
        Numbers entered: 1, 3, 9, 5, 7
        

        【讨论】:

          猜你喜欢
          • 2022-11-10
          • 1970-01-01
          • 1970-01-01
          • 2019-07-28
          • 1970-01-01
          • 2020-08-24
          • 1970-01-01
          • 2019-10-11
          • 1970-01-01
          相关资源
          最近更新 更多