字符串翻转?
s=['level','dog','keep','apple','pool','loop','god']for i in range(len(s)):
for j in range(i+1,len(s)):
if ''.join(reversed(s))==s: #这个语句有哪位能指点一下吗,好像是翻转字符串的操作,但是我不是很明白怎么实现的
print(s,s,sep="--")
>>> help(reversed)
Help on class reversed in module builtins:
class reversed(object)
|reversed(sequence, /)
|
|Return a reverse iterator over the values of the given sequence.
===>
reversed是一个类,反转迭代器的序列值,返回反向迭代器
需要用遍历,或者List,或者next()等方法,获取作用后的值
具体看这里
https://blog.csdn.net/gymaisyl/article/details/83785853
笨鸟学飞 发表于 2021-10-13 22:50
>>> help(reversed)
Help on class reversed in module builtins:
抱歉,看了网站之后我还是不明白字符串翻转要用join和reverse,尤其是不明白join是干啥的 join 方法
reversed 方法 Daniel_Zhang 发表于 2021-10-14 15:47
join 方法
reversed 方法
啊 不是 join我会用 但是不知道为什么在reversed这里要用join
Daniel_Zhang 发表于 2021-10-14 16:06
哎 在问具体一点吧,就是 为什么要用join为不是其他的比如list之类的,就是我想知道原理是什么 Jerry~Mouse 发表于 2021-10-14 16:15
哎 在问具体一点吧,就是 为什么要用join为不是其他的比如list之类的,就是我想知道原理是什么
因为 reversed 传回来的是一个迭代器啊
我这里用 s 举例, keep reversed 以后出现一个迭代器
>>> s=['level','dog','keep','apple','pool','loop','god']
>>> s
['level', 'dog', 'keep', 'apple', 'pool', 'loop', 'god']
>>> a = reversed(s)
>>> a
<reversed object at 0x7f955845c160>
然后你用 list 得到的是
>>> list(a)
['p', 'e', 'e', 'k']
你这样就不方便和原列表内的 str 进行比较了啊,原列表里是连起来的,而不是 str 拆分成单个字母的列表
str(a) 的话,是把迭代器变成了 str 类型
>>> s=['level','dog','keep','apple','pool','loop','god']
>>> a = reversed(s)
>>> str(a)
'<reversed object at 0x7f954833a760>'
为了让迭代器的结果显示成完整的 str 类型, 也就是 peek,去和原列表内的元素进行比较,只能使用 join,就是从迭代器里面挨个取字符,拼接成一个完整的 str, 也就是 peek
然后用这个 peek 去挨个比对原列表中的每一个元素,看匹配项
join() 语句解说/用法
语句结构:字符串.join(可迭代的)
范例:a = ["a", "b", "c", "d"] # 列表 list
b = ("一", "二", "三", "四") # 元祖 tuple
c = "黑白红黄蓝" # 字符串 string
A = ','.join(a) # 这里表示将列表 a 里的全部元素组合成一串字符串,以逗号 ',' 隔开
B = ''.join(b) # 这里表示将元祖 b 里的全部元素组合成一串字符串,'' 表示没有任何字符,所以没有隔开,都相连
C = '$'.join(c) # 这里表示将字符串 c 里的每一个字符组合成一串新字符串,以符号 '$' 隔开
print(A)
print(B)
print(C)a,b,c,d
一二三四
黑$白$红$黄$蓝
reversed() 语句解说/用法
reversed() 语句用于序列倒转(序列如:列表、元祖、字符串、区间)
语句结构:reversed(序列)
范例:a = ["a", "b", "c", "d"] # 列表 list
b = ("一", "二", "三", "四") # 元祖 tuple
c = "黑白红黄蓝" # 字符串 string
d = range(6)
A = tuple(reversed(a)) # 翻转列表 a,并把结果以元祖类型赋值给 A
B = ','.join(reversed(b)) # 翻转元祖 b,并把结果以字符串类型赋值给 B(这里每个元素都以逗号 ',' 隔开)
C = list(reversed(c)) # 翻转字符串 c,并把结果以列表类型赋值给 C
D = list(reversed(d)) # 翻转区间 d,并把结果以列表类型赋值给 D
print(A)
print(B)
print(C)
print(D)('d', 'c', 'b', 'a')
四,三,二,一
['蓝', '黄', '红', '白', '黑']
如题:''.join(reversed(s)) == s
# '' 表示没有字符隔开,所有元素相连
# reversed(s) 表示翻转字符串 s 傻眼貓咪 发表于 2021-10-14 16:46
join() 语句解说/用法
语句结构:字符串.join(可迭代的)
半年后发现了居然这道题有这么详细的解答,我明白了,谢谢!!
页:
[1]