从本例学到什么
- 字符串对象的join方法的用法。
- 编程题目要求“行末不得有多余的空格”,代码中该怎么做到。
实例程序
题目描述
从列表中删除元素
删除列表中所有符合条件的值。
输入格式:
输入n,代表要测试n次。每次测试:
首先,输入1行字符串(字符串内的元素使用空格分隔)
然后,输入要删除的元素x。
输出格式:
输出删除元素x后的每行字符串。如果元素全部被删除,则输出空行。
注意:行尾不得有多余的空格。
输入样例:
5
1 1 1 2 1 2 1 1 1
1
1 1 1 2 2 2 1 1 1
2
ab ab ab cd cd de de
ab
1 1 1 1
1
x y x x x z
t
输出样例:
2 2
1 1 1 1 1 1
cd cd de de
x y x x x z
来源
PTA网站
上述题目的参考答案
n = int(input())
for i in range(n): #对于每一组数据
words = input().split() #读入一行字符串,分割得到字符串列表
t = input() #读入要去除的值
remains = [] #存储去除t之后的元素的结果列表
for w in words:
if w != t:
remains.append(w) #如果元素的值不等于t,则保留
print(" ".join(remains)) #输出结果列表
知识点讲解
- 上述代码中,最后一行中的" “.join(remains)调用了字符串对象的join方法。这里,” "是空格字符串,remains列表是方法的参数。对象的方法其实是一个函数,一个特殊的函数。
- 调用join方法的写法是: 字符串对象.join(字符串序列)。要强调的是,参数必须是序列(如列表、元组等),而且元素是字符串类型的。如果元素不是字符串类型的,那么运行该次调用将导致程序出错。
- 调用join方法的作用是把参数内的各个字符串元素连接成一个字符串。
- 下面的调用中,双引号内是一个空格,返回的结果是"1 2 3"。结果是一个字符串,取自参数的三个元素之间用空格间隔。末尾没有多余的空格。
" ".join(['1', '2', '3'])
- 下面的调用中,双引号内是一个逗号,返回的结果是"1,2,3"。结果是一个字符串,取自参数的三个元素之间用逗号间隔。末尾没有多余的空格或逗号。
",".join(['1', '2', '3'])
- 下面的调用中,双引号内是一个两个中划线,返回的结果是"a–b--c"。结果是一个字符串,取自参数的三个元素之间用两个中划线间隔。末尾没有多余的中划线或空格。
"--".join(['a', 'b', 'c'])
- 下面的调用中,双引号内是一个空字符,不是空格字符,返回的结果是"abc"。结果是一个字符串,取自参数的三个元素之间没有间隔。末尾没有多余的空格。空字符是没有内容的字符。
"".join(['a', 'b', 'c'])
小结
- 学习join方法的用法,要抓住调用join方法的写法和含义。上一节给出了讲解和举例。
- join方法适合“用在输出一组数,要求行末尾不得有多余的空格”的情形。
- 调用join方法,参数必须是字符串元素组成的序列(如列表、元组)。