我正在尝试通过使用以下代码在Python中创建Set结构:
a = set ([1,2,3])
print (a)
a ={1,2,3}
print (a)
a = {'FG'}
print (a)
a = set('FG')
print (a)
输出:
{1, 2, 3}
{1, 2, 3}
{'FG'}
{'F', 'G'}
使用两个选项创建带有数字列表的集合会产生相同的结果, 我看到如果输入类型是String,则我期望的结果是第二个结果,即创建一组字符,而第一个结果似乎忽略了字符串是字符序列,因此感到困惑。
答案 0 :(得分:0)
set()
构造函数将Iterable作为参数,并将在该Iterable中创建每个唯一项的集合。在这种情况下,字符串 IS 是可迭代的,因此您将看到由字符串中的每个字符组成的集合。
要获取设置的字符串,请将字符串放置在列表或元组中。
set(['abc', 'efg'])
答案 1 :(得分:0)
执行a = {'FG'}
时,您将用一个元素(即字符串"FG"
)定义集合。
然后,当您执行a = set('FG')
时,可以使用迭代器定义集合,但是在这种情况下,迭代器不是列表而是字符串。 set函数将在指定的iterable中找到所有唯一元素,因此在这种情况下,它将在给定字符串中找到所有唯一字符。
如果希望两者输出相同的结果,则必须给set函数一个包含单个字符串的列表,例如:a = set(["FG"])
。
答案 2 :(得分:0)
传递整数时,是以列表形式传递它。
>>>a=set([1,2,3])
>>>print(a)
{1,2,3}
您没有在列表中传递字符串,
>>>a=set('FG')
>>>print(a)
{'F','G'}
因此python对两者的解释不同。
如果将字符串作为列表传递,结果将类似于整数。
>>> a=set(['FG'])
>>> print(a)
{'FG'}
set()将可迭代对象作为输入。
答案 3 :(得分:0)
set
构造函数采用一个iterable
并将可迭代对象的每个元素添加到集合中。因此,当您使用可迭代列表[1,2,3]
构造集合时,您自然会以{1, 2, 3}
结尾。
字符串实际上是可迭代的:
for i in 'abc':
print(i)
打印:
a
b
c
遍历字符串将返回每次迭代的字符串中的每个字符。因此,当您使用字符串构造一个集合(之所以可以这样做是因为它是可迭代的)时,最终会得到一个集合,其中每个字符都成为该集合的单独成员:
set('FG') -> {'F', 'G'}
但是,当您使用 literal 创建集合时,而不是像{'FG'}
那样调用构造函数时,您只是在创建一个带有单一成员'FG'
。