wqx285314590 发表于 2020-3-15 18:53:02

第20讲的课后习题请教

动动手的第一题,把代码简化为:

str1 = '拷贝过来的字符串拷贝过来的字符串'
list1 = []
for each in str1:
    if each not in list1:
      print(each, str1.count(each))
    list1.append(each)

如何理解 if each not in list1的not呢?如果把not去掉,发现跑出结果竟然是一样的。都是
拷 2
贝 2
过 2
来 2
的 2
字 2
符 2
串 2

list1.append(each)的作用也不明白,去掉这行,line4 有not就有输出,没有not就没有输出。

请大佬答疑解惑,谢谢!




qiuyouzhi 发表于 2020-3-15 18:56:56

1,not是用来防止有重复字符的
2,将each添加进list1

zltzlt 发表于 2020-3-15 20:30:06

其实 list1 的作用就是去除重复元素

wqx285314590 发表于 2020-3-16 09:12:56

qiuyouzhi 发表于 2020-3-15 18:56
1,not是用来防止有重复字符的
2,将each添加进list1

if each not in list1:
         print(each, str1.count(each))
那each in list1的情况下,如何执行?

wqx285314590 发表于 2020-3-16 09:16:00

zltzlt 发表于 2020-3-15 20:30
其实 list1 的作用就是去除重复元素

str1 = '拷贝过来的字符串拷贝过来的字符串'
list1 = []
for each in str1:
    if each not in list1:
      print(each, str1.count(each))
    list1.append(each)
>>> list1
['拷', '贝', '过', '来', '的', '字', '符', '串', '拷', '贝', '过', '来', '的', '字', '符', '串']

list1没有去除重复元素呀

qiuyouzhi 发表于 2020-3-16 09:22:47

wqx285314590 发表于 2020-3-16 09:16
str1 = '拷贝过来的字符串拷贝过来的字符串'
list1 = []
for each in str1:


不是要在列表中去重,而是在显示中去重

黄剑盛 发表于 2020-5-25 15:44:31

wqx285314590 发表于 2020-3-16 09:16
str1 = '拷贝过来的字符串拷贝过来的字符串'
list1 = []
for each in str1:


排除重复的,你的list1位置放错了,他应该是在if each not in list1里面,所以如果有重复它就会跳过if的运行,没重复他才运行并进入list1
页: [1]
查看完整版本: 第20讲的课后习题请教