2020-3-11 15:13:17 | 作者:老铁SEO | 0个评论 | 人浏览
一个enum是定义一组值的对象,它可以包括零个或多个值成员。只须定义一个enum型的对象.enum对象的值都会自动获得一个数字值,从0开始,依次递增。如:
EnumDemo.java
packagenet.javagarage.enums;
publicclassEnumDemo{
privateenumSeasons{
winter,spring,summer,fall
}
publicstaticvoidmain(String[]args){
for(Seasonss:Seasons.values()){
System.out.println(s);
}
}
}
尽管enums有这么多的属性,但并不是用的越多越好,如果那样还不如直接用类来的直接.enums的优势在定义int最终变量仅当这些值有一定特殊含义时.但是如果需要的是一个类,就定义一个类,而不是enum。
枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,sat值为6。
只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如一定要把数值赋予枚举变量,则必须用强制类型转换。
enumerate
enumerate()说明
enumerate()是python的内置函数
enumerate在字典上是枚举、列举的意思
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
enumerate多用于在for循环中得到计数
例如对于一个seq,得到:
(0,seq[0]),(1,seq[1]),(2,seq[2])
1
1
enumerate()返回的是一个enumerate对象,例如:
enumerate()使用
如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
list1=["这","是","一个","测试"]
foriinrange(len(list1)):
printi,list1[i]123123
上述方法有些累赘,利用enumerate()会更加直接和优美:
list1=["这","是","一个","测试"]
forindex,iteminenumerate(list1):
printindex,item
>>>
0这
1是
2一个
3测试1234567812345678
enumerate还可以接收第二个参数,用于指定索引起始值,如:
list1=["这","是","一个","测试"]
forindex,iteminenumerate(list1,1):
printindex,item
>>>
1这
2是
3一个
4测试1234567812345678
补充
如果要统计文件的行数,可以这样写:
count=len(open(filepath,'r').readlines())11
这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。
可以利用enumerate():
count=-1
forindex,lineinenumerate(open(filepath,'r')):
count+=1
enumeration
Enumeration和Iterator的主要区别
(1)java中的集合类都提供了返回Iterator的方法,就是迭代器,它和Enumeration(枚举)的主要区别其实就是Iterator可以删除元素,但是Enumration却不能。
(2)还有一点要注意的就是,使用Iterator来遍历集合时,应使用Iterator的remove()方法来删除集合中的元素,使用集合的remove()方法将抛出ConcurrentModificationException异常。
(3)Enumeration接口的功能与Iterator接口的功能是重复的。此外,Iterator接口添加了一个可选的移除操作,并使用较短的方法名。新的实现应该优先考虑使用Iterator接口而不是Enumeration接口。