Python将元组列表元素分类到两个独立列表的代码异常求助
问题根源分析
你的代码错误出在列表拼接的操作上:
Python中list += 可迭代对象会把可迭代对象里的每一个元素逐个追加到列表中,而字符串本身就是可迭代对象,所以你执行good += items[i][0]的时候,相当于把字符串"foo"拆成了'f'、'o'、'o'三个独立字符存入good列表,而不是把整个"foo"作为一个元素存入列表。你输出时如果取alpha[0]自然就只会得到'f'。
解决方法
有两种改法都可以实现你的需求:
- 方法1:用
append()方法追加单个元素,这是最符合需求的写法,同时可以优化遍历逻辑,无需按索引取值
lst = [("foo", "good"), ("bar", "bad"), ("x", "n")] def sort(items): good = [] bad = [] for item in items: if item[1] == 'good': good.append(item[0]) else: bad.append(item[0]) return good, bad alpha, beta = sort(lst)
- 方法2:如果要保留
+=的写法,需要把要添加的字符串包装成列表,比如good += [items[i][0]],这样+=会把整个列表里的唯一元素追加到目标列表中。
修改后运行代码,alpha的结果就会是['foo'],符合分类存储的预期。
内容的提问来源于stack exchange,提问作者user14611431
相关产品推荐
相关产品推荐

