You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python技术问询:如何仅向列表添加未存在的字符串,避免重复

修正你的代码并实现需求

先指出你写的store函数里的几个关键问题:

  • 函数开头把传入的列表直接赋值为空列表[],等于每次调用都丢弃了原有列表,完全没法累积数据。
  • 判断逻辑搞反了:应该是单词不在列表里时才添加,你写的是if word in list才执行添加操作,正好相反。
  • list.append(word)没有返回值,不能赋值给list,否则list会变成None,后续操作会报错。
  • list += word会把字符串拆成单个字符塞进列表,比如输入"cat"会变成['c','a','t'],这不是你要的效果,应该用append或者list += [word]。

修正后的store函数

def store(word_list, word):
    # 判断单词是否不在列表中,是则追加
    if word not in word_list:
        word_list.append(word)
    # 列表是可变对象,修改后外部会同步,这里返回列表是为了方便后续操作
    return word_list

完整实现需求的程序

让用户输入5个单词,去重后输出:

def store(word_list, word):
    if word not in word_list:
        word_list.append(word)
    return word_list

# 初始化空列表用于存储不重复单词
unique_words = []

# 循环5次获取用户输入
for _ in range(5):
    user_input = input("请输入一个单词:")
    store(unique_words, user_input)

# 输出最终结果
print("去重后的单词列表:", unique_words)

更简洁的写法(无需单独写函数)

如果不需要单独封装函数,直接在循环里处理即可:

unique_words = []
for _ in range(5):
    word = input("请输入一个单词:")
    if word not in unique_words:
        unique_words.append(word)
print("去重后的单词列表:", unique_words)

补充:用集合实现更高效的去重

如果不需要保持输入顺序,用集合(set)判断元素是否存在的效率更高,适合处理大量数据:

unique_words = set()
for _ in range(5):
    word = input("请输入一个单词:")
    unique_words.add(word)
# 转成列表保持输出格式
print("去重后的单词列表:", list(unique_words))

内容的提问来源于stack exchange,提问作者o0pink0o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:44:54