题解 | 多组_带空格的字符串_T组形式
多组_带空格的字符串_T组形式
https://www.nowcoder.com/practice/cff28a28d7f54419a640a8bb19f4275f
# 接收整数t
t = int(input().strip())
for _ in range(t):
n = int(input().strip())
str = input().split()
#每个单词单独反转
str = [s[::-1]for s in str]
#单词之间顺序反转
str=str[::-1]
#拼接输出,将字符串列表合成一个字符串,需要用到join()函数
print("".join(str))
str = input().split()接收到的是一个忽略了空格的字符串列表。
接收完后只需要反转这个列表中的每一个字符串,然后再把这个列表反转(切片反转大法好),最终拼接输出即可。
每一个字符串字符串使用列表推导反转(这样做会创建新的字符串)
列表推导反转
- 列表推导:
[expression for item in iterable]创建新列表,不修改原iterable。 - 示例:
“反转原来的strlist”?No,实际上是创建了新的
- 重新赋值:如果写
str_list = [s[::-1] for s in str_list],新列表赋值给str_list,变量指向新对象,原对象可能被垃圾回收。 - 原列表对象:不变,但变量名指向新列表。“反转”的是变量的内容。
如果想真正修改原列表?
- 用循环 + 索引:
str_list = ["hello", "world"]
for i in range(len(str_list)):
str_list[i] = str_list[i][::-1] # 修改原列表元素
print(str_list) # ["olleh", "dlrow"]