这种差异让我很困惑:
>>> s = "()())()"
>>> print set(s)
set([')', '('])
>>> print {s}
set(['()())()'])
为什么?
当你写道:
set(s)
它将字符串视为可迭代的,并创建一个包含其元素的集合。字符串的元素是单个字符。所以这相当于做:
{'(', ')', '(', ')', ')', '(', ')'}
由于一个集合不能包含重复的元素,所以可以得到一个包含两个唯一字符< code>'('和< code>')'的集合。
然而,当你写下:
{s}
它只是创建一个集合,其元素是变量的值。< code>{}语法将每个变量视为单个元素,而不是对其进行迭代。
< code>set()函数经常被用来从一种集合转换成它的一组元素,这就是为什么它迭代它的原因。
< code>set()将iterable作为参数,其项目将是集合的元素。
因此,set('my-string')将包含我传递给它的可迭代的每个字符,即{'m','y'…}
使用{}
,您可以通过写下它的每个元素来创建集合,并用逗号分隔。
{'my string'} 包含一个元素,即字符串 'my string'
从set()
方法的Python留档:
返回一个新的set对象,可以选择使用iterable中的元素。
由于字符串是可迭代的,set()
方法在给定字符串中创建一组所有字符。但是,由于集合不允许重复值,因此输出是包含字符串中两个唯一字符的集合:“)”
和“(”。
另一方面,速记语法{s}
在大括号之间创建一个所有项目的集合。由于您只插入了一个项目s
(您的字符串),因此输出是一个仅包含该项目的集合。
我建立了一个具有两个节点和外部Zookeper集合的SOLR集群。该ZK集合有3个节点。我使用参数启动solr实例: 这意味着,我希望SOLR配置在/solr5下,而不是默认情况下的/下。 文件夹 /solr5在ZK中创建: 我还可以毫无问题地将SOLR配置上传到/solr5中。 我的问题是,在创建集合时,如何将生成的文件置于/solr5之下? 我用来创建集合的命令是: 我查看了本页上的文档,但没
主要内容:认识set集合,命令汇总,命令演示Redis set (集合)遵循无序排列的规则,集合中的每一个成员(也就是元素,叫法不同而已)都是字符串类型,并且不可重复。Redis set 是通过哈希映射表实现的,所以它的添加、删除、查找操作的时间复杂度为 O(1)。集合中最多可容纳 2^32 - 1 个成员(40 多亿个)。 Redis set 使用以下方式向集合中添加一个成员,语法格式如下: key:指定一个键 member:集合中要存储
主要内容:Python创建set集合,Python访问set集合元素,Python删除set集合Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。 从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示: {element1,element2,...,elementn} 其中,elementn 表示集合中的元素,个数没有限制。 从内容上看,同一集合中,只能存储不可变的数据类型,
主要内容:HashSet 类,TreeSet 类Set 集合类似于一个罐子,程序可以依次把多个对象“丢进”Set 集合,而 Set 集合通常不能记住元素的添加顺序。也就是说 Set 集合中的对象不按特定的方式排序,只是简单地把对象加入集合。 Set 集合中不能包含重复的对象,并且最多只允许包含一个 null 元素。 Set 实现了 Collection 接口,它主要有两个常用的实现类: HashSet 类和 TreeSet类。 HashSet
Scala 集合 Scala Set(集合)是没有重复的对象集合,所有的元素都是唯一的。 Scala 集合分为可变的和不可变的集合。 默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scala.collection.mutable.Set 包。 默认引用 scala.collection.immutable.Set,不可变集合实例如下: val set = Set(1
前段时间我读到关于在Spring中创建bean的文章,在为集合和映射创建bean时有一个例外。我的意思是为集合或映射创建bean,需要创建一个包装类,例如一个列表作为这个类的字段 然后它可以用于依赖注入。我想知道为什么没有包装类就不能注入它?