|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
str1 = '''拷贝过来的字符串'''
list1 = []
for each in str1:
if each not in list1:
if each == '\n':
print('\\n', str1.count(each))
else:
print(each, str1.count(each))
list1.append(each)
这里为什么要有一个list1?
如果
str1 = '''拷贝过来的字符串'''
for each in str1:
if each == '\n':
print('\\n', str1.count(each))
else:
print(each, str1.count(each))
如果没有list,run这个代码好像停不下来。。。。
本帖最后由 sunrise085 于 2020-8-13 10:30 编辑
举个例子:假设:str1 = '''abc\nabcde\nabc'''
- str1 = '''abc\nabcde\nabc'''
- list1 = []
- for each in str1:
- if each not in list1:
- if each == '\n':
- print('\\n', str1.count(each))
- else:
- print(each, str1.count(each))
- list1.append(each)
复制代码
运行结果:
遍历整个字符串的时候,不会重复输出。虽然,很多字符都出现了不止一次,但是统计输出的时候,只输出了一次,因为有list1,统计过的字符,会被放入list1中,之后在遇到该字符就不再重复统计了,第一个字符是'a',进行统计并输出了 a 3 ,并将字符'a' 添加到list1中,第五个字符还是'a' ,但是'a' 已经在list1中,说明已经统计过了,不会进入if语句了就不再输出了。其他字符也是如此
第二种写法
- str1 = '''abc\nabcde\nabc'''
- for each in str1:
- if each == '\n':
- print('\\n', str1.count(each))
- else:
- print(each, str1.count(each))
复制代码
运行结果
- a 3
- b 3
- c 3
- \n 2
- a 3
- b 3
- c 3
- d 1
- e 1
- \n 2
- a 3
- b 3
- c 3
复制代码
这种写法,遍历字符串的每一个字符的时候,都会有输出。第一个字符是'a',进行统计并输出了 a 3 ,第五个字符还是'a' ,再次输出 a 3 ,第11个字符还是'a' ,再次输出 a 3
若字符串有成百上千个字符实际上只有几十种不同的字符,那第二种写法就会不停的输出,感觉好像程序停不下来了。而第一种写法,只会输出这几十次,程序运行也会快很多,因为print非常耗费时间。
|
|