什么是集合
集合是python的数据结构的一种,也是我们比较常见的数据结构,从小学就应该接触过集合,集合是无序的,他没有排列顺序,同时也不会存在相同的数字,就像下面的代码
x = set('123132313')
print(x)
{'3', '1', '2'}
集合中的相同元素会进行自动的合并。
怎么创建集合
就像我上面的一样,set()函数可以帮助我们把其他的数据结构转化为集合,同样我们可以直接用大括号进行创建
x = {1, 2, 3, 3, 2, 1}
print(x)
{1, 2, 3}
但是空的集合我们并不能直接用大括号进行创建,因为那是一种字典了,下面的代码向我们展示了如何创建空集合。
x = set()
集合的函数
我们可以用in来判断集合中是否有该元素
>>> x = {1, 2, 3}
>>> 2 in x
True
同时我们也可以进行合集,交集,并集等操作
>>> a - b # 集合a中包含而集合b中不包含的元素
>>> a | b # 集合a或b中包含的所有元素
>>> a & b # 集合a和b中都包含了的元素
>>> a ^ b # 不同时包含于a和b的元素
简单应用
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:
“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
请你推算一下,他当时到底有多年轻。
这个我们怎么计算呐?我们可以创建一个0~9的集合,然后循环11到50(因为他还年轻),这个时候我们需要把数字三次方变成集合,然后求差集,之后我们再进行四次方,如果剩下的集合与他相同,那么说明了就是这个年龄,代码如下:
x = set('0123456789')
for i in range(11, 50):
if len(set(str(i**3)))== 4:
x = x - set(str(i**3))
if len(set(str(i**4))) == 6 and x == set(str(i**4)):
print(i)
else:
x = set('0123456789')