set是一组数,无序,内容不能重复,通过调用set()方法创建,那么如何对set集合进行遍历呢?
1.简单的set:
s1 = set(['111', '222', '333'])
对于s1,是一组数,有几种方法可以遍历:
function1:直接用in的方式遍历set集合。
function2:用iter()迭代器来遍历集合
看到前两种方法可能有人就有疑问了,为啥和上面写入s1时候的顺序不一样,别急,往下看。
function3:这种方法只能输出index,并不能输出value,因为set不支持set['cols']的读取方式
function4:可以把index和value同时输出,看到这里大家应该可以明白,为什么function1和function2输出是333和222反过来了,因为333的index才是1,而222的index是2,输出是按照下标从小到大输出的。
#function1
for value in s1:
print (x)
--------结果---------
111
333
222
#function2
for value in iter(s1):
print (value)
--------结果---------
111
333
222
#function3
for index in range(len(s1)):
print (index)
--------结果---------
0
1
2
#function4
for index, value in enumerate(s1):
print ('index:',index,'value:',value)
--------结果---------
index: 0 value: 111
index: 1 value: 333
index: 2 value: 222
2.复杂set
s2 = set([('小明', 149), ('小兰', 120), ('小红', 140)])
可以看到,这个set有点类似字典,有key和value的感觉,那么这种set如何遍历呢?其实和上面的方法是一样的,我们来看下效果
在下面的结果中,可以看到,输出的顺序,其实和我们写入的是不一样的,这也是set的特点
注意:set的元素是tuple,因此 在function2和function4时,for 循环的变量被依次赋值为tuple。
function1是对每一组元素读取,因此是数据本身的类型
#function1
for row in s2:
print ('index:',row[0],'value:',row[1])
print('type:',type(row[0]),'type:',type(row[1]))
------------结果-------------
index: 小兰 value: 120
type:
type:
index: 小明 value: 149
type:
type:
index: 小红 value: 140
type:
type:
#function2
for value in iter(s2):
print (value)
print('type:',type(value))
------------结果-------------
('小兰', 120)
type:
('小明', 149)
type:
('小红', 140)
type:
#function3
for index in range(len(s2)):
print (index)
------------结果-------------
0
1
2
#function4
for index, value in enumerate(s2):
print ('index:',index,'value:',value)
print('type:',type(index),'type:',type(value))
------------结果-------------
index: 0 value: ('小兰', 120)
type:
type:
index: 1 value: ('小明', 149)
type:
type:
index: 2 value: ('小红', 140)
type:
type:
以上是对set两种形式的遍历,可能还有更加好的方法,欢迎大家随时交流