鱼C论坛

 找回密码
 立即注册
查看: 2463|回复: 9

[已解决]字符串翻转?

[复制链接]
发表于 2021-10-13 22:38:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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[i]))==s[j]:     #这个语句有哪位能指点一下吗,好像是翻转字符串的操作,但是我不是很明白怎么实现的
          print(s[i],s[j],sep="--")
最佳答案
2021-10-14 16:46:26
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')
四,三,二,一
['蓝', '黄', '红', '白', '黑']       
[5, 4, 3, 2, 1, 0]
如题:
''.join(reversed(s[i])) == s[j]

# ''             表示没有字符隔开,所有元素相连
# reversed(s[i]) 表示翻转字符串 s[i]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-13 22:50:05 | 显示全部楼层
>>> 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-14 15:37:31 | 显示全部楼层
笨鸟学飞 发表于 2021-10-13 22:50
>>> help(reversed)
Help on class reversed in module builtins:

抱歉,看了网站之后我还是不明白字符串翻转要用join和reverse,尤其是不明白join是干啥的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-14 15:47:49 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-14 15:58:08 | 显示全部楼层
Daniel_Zhang 发表于 2021-10-14 15:47
join 方法

reversed 方法

啊 不是 join我会用 但是不知道为什么在reversed这里要用join
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-14 16:06:58 | 显示全部楼层
截屏2021-10-14 16.06.41.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-14 16:15:37 | 显示全部楼层

哎 在问具体一点吧,就是 为什么要用join为不是其他的比如list之类的,就是我想知道原理是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-14 16:26:31 | 显示全部楼层
Jerry~Mouse 发表于 2021-10-14 16:15
哎 在问具体一点吧,就是 为什么要用join为不是其他的比如list之类的,就是我想知道原理是什么

因为 reversed 传回来的是一个迭代器啊

我这里用 s[2] 举例, keep reversed 以后出现一个迭代器
>>> s=['level','dog','keep','apple','pool','loop','god']
>>> s
['level', 'dog', 'keep', 'apple', 'pool', 'loop', 'god']
>>> a = reversed(s[2])
>>> 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[2])
>>> str(a)
'<reversed object at 0x7f954833a760>'

为了让迭代器的结果显示成完整的 str 类型, 也就是 peek,去和原列表内的元素进行比较,只能使用 join,就是从迭代器里面挨个取字符,拼接成一个完整的 str, 也就是 peek

然后用这个 peek 去挨个比对原列表中的每一个元素,看匹配项
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-10-14 16:46:26 | 显示全部楼层    本楼为最佳答案   
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')
四,三,二,一
['蓝', '黄', '红', '白', '黑']       
[5, 4, 3, 2, 1, 0]
如题:
''.join(reversed(s[i])) == s[j]

# ''             表示没有字符隔开,所有元素相连
# reversed(s[i]) 表示翻转字符串 s[i]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-6 14:45:51 | 显示全部楼层
傻眼貓咪 发表于 2021-10-14 16:46
join() 语句解说/用法

语句结构:字符串.join(可迭代的)

半年后发现了居然这道题有这么详细的解答,我明白了,谢谢!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 12:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表