用Python将列表转换为集合!我做错了什么


我用随机字母(大写和小写(创建了一个列表。我试图写代码,所以它只打印唯一的值,考虑到大写&小写字母。例如,["A"、"A"、"A"、"B"、"B"]将打印["A","B"]

这是我迄今为止的代码:

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的答案所示。

最新更新