如何替换列表中的值

时间:2014-01-13 14:36:24

标签: python list python-2.7

程序要求用户输入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

当程序进入replace方法时,会引发属性错误

4 个答案:

答案 0 :(得分:2)

您可以使用:

numbers[index] = user

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

如果您希望在列表末尾添加数字,可以使用append()

numbers.append(user)

如果您希望在给定位置插入数字,可以使用insert()(例如,位置0):

numbers.insert(0, user)

答案 1 :(得分: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)

答案 2 :(得分:1)

您可以将其替换为下标符号,例如

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

答案 3 :(得分:0)

如果您不关心数字的顺序,您应该查看集合。另外,如果你想使用数字而不是字符串,你应该将字符串转换为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