这是我迄今为止的代码:
List_1 = ["a","a","a","b","A","b", "B", "c", "C"]
for x in List_1:
l = x.lower()
myset = set(l)
print(myset)
&这是输出:
{'a'}
{'a'}
{'a'}
{'b'}
{'a'}
{'b'}
{'b'}
{'c'}
{'c'}
既然我通过一个集合打印这些值,为什么它仍然打印重复的值?我做错了什么?
在每次循环迭代中创建一个新集合是错误的。
代替
myset = set(l)
您想要使用
myset.add(l)
并在循环之前初始化CCD_ 1。
或者,您可以用集合理解来替换整个循环:
myset = {x.lower() for x in List_1}
您要获取列表中的每一个元素,然后用它创建一个集合——每个集合都不知道另一个集合。
试试这样的东西:
myset = set(l.lower() for l in List_1)
你最终会得到一套真正的。
您当前的解决方案在列表上迭代,为列表中的每个项创建一个单例集,然后打印并丢弃。
要将列表转换为集合,只需编写set(the_list)
即可。
在您的情况下,首先需要转换列表(通过小写字母(。这可以通过列表理解来完成,它创建了一个新的列表。或者,您可以使用生成器表达式,该表达式可以直接传递给set
构造函数,而无需首先创建临时列表:
result = set(s.lower() for s in the_list)
最后,Python对这个结构有特殊的语法优势,使用集合理解,如mkrieger1的答案所示。