为何两个列表输出格式不同?Python列表迁移输出异常排查
问题原因与解决办法
你的猜测完全正确,问题就出在append函数的用法上:
random.sample(words, 2)会返回一个包含2个元素的子列表- 用
append会把这个子列表作为单个元素添加到mywords里,导致mywords变成了嵌套列表(比如[[元素A, 元素B]]) - 遍历打印时,会把这个子列表直接转成字符串,自然就带括号了
两种快速解决方式
方式1:用extend替代append
extend会把sample返回的子列表中的元素逐个添加到mywords,而非把整个子列表当单个元素插入:
import random words = ['nugget', 'jasmine', 'trolley', 'weight', 'soap'] mywords = [] random.shuffle(words) # 替换append为extend mywords.extend(random.sample(words, 2)) print("Words: ") for i in words: print(str(i)) print("My Words: ") for i in mywords: print(str(i))
方式2:用列表拼接+=
效果和extend完全一致,写法更简洁:
# 把mywords.extend(...)替换成这行即可 mywords += random.sample(words, 2)
可选:完成真正的"迁移"(从原列表移除元素)
如果你的需求是把元素从words移动到mywords(原列表不再保留这些元素),可以先暂存选中的元素,再从原列表删除:
import random words = ['nugget', 'jasmine', 'trolley', 'weight', 'soap'] mywords = [] random.shuffle(words) selected_words = random.sample(words, 2) mywords.extend(selected_words) # 从原列表移除已迁移的元素 for word in selected_words: words.remove(word) print("Words: ") for i in words: print(str(i)) print("My Words: ") for i in mywords: print(str(i))
内容的提问来源于stack exchange,提问作者TheeSoggyNotions
相关产品推荐
相关产品推荐

