鱼C论坛

 找回密码
 立即注册
查看: 75|回复: 8

字符串翻转?

[复制链接]
发表于 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="--")
想知道小甲鱼最近在做啥?请访问 -> 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 以后出现一个迭代器
  1. >>> s=['level','dog','keep','apple','pool','loop','god']
  2. >>> s
  3. ['level', 'dog', 'keep', 'apple', 'pool', 'loop', 'god']
  4. >>> a = reversed(s[2])
  5. >>> a
  6. <reversed object at 0x7f955845c160>
复制代码

然后你用 list 得到的是

  1. >>> list(a)
  2. ['p', 'e', 'e', 'k']
复制代码


你这样就不方便和原列表内的 str 进行比较了啊,原列表里是连起来的,而不是 str 拆分成单个字母的列表

str(a) 的话,是把迭代器变成了 str 类型

  1. >>> s=['level','dog','keep','apple','pool','loop','god']
  2. >>> a = reversed(s[2])
  3. >>> str(a)
  4. '<reversed object at 0x7f954833a760>'
复制代码


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

然后用这个 peek 去挨个比对原列表中的每一个元素,看匹配项
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2021-10-14 16:46:26 | 显示全部楼层
join() 语句解说/用法

语句结构:字符串.join(可迭代的)
范例:
  1. a = ["a", "b", "c", "d"]    # 列表 list
  2. b = ("一", "二", "三", "四") # 元祖 tuple
  3. c = "黑白红黄蓝"             # 字符串 string

  4. A = ','.join(a)     # 这里表示将列表 a 里的全部元素组合成一串字符串,以逗号 ',' 隔开
  5. B = ''.join(b)       # 这里表示将元祖 b 里的全部元素组合成一串字符串,'' 表示没有任何字符,所以没有隔开,都相连
  6. C = '$'.join(c)      # 这里表示将字符串 c 里的每一个字符组合成一串新字符串,以符号 '$' 隔开

  7. print(A)
  8. print(B)
  9. print(C)
复制代码
  1. a,b,c,d
  2. 一二三四
  3. 黑$白$红$黄$蓝
复制代码

reversed() 语句解说/用法

reversed() 语句用于序列倒转(序列如:列表、元祖、字符串、区间)
语句结构:reversed(序列)
范例:
  1. a = ["a", "b", "c", "d"]    # 列表 list
  2. b = ("一", "二", "三", "四") # 元祖 tuple
  3. c = "黑白红黄蓝"             # 字符串 string
  4. d = range(6)

  5. A = tuple(reversed(a))      # 翻转列表 a,并把结果以元祖类型赋值给 A
  6. B = ','.join(reversed(b))   # 翻转元祖 b,并把结果以字符串类型赋值给 B(这里每个元素都以逗号 ',' 隔开)
  7. C = list(reversed(c))       # 翻转字符串 c,并把结果以列表类型赋值给 C
  8. D = list(reversed(d))       # 翻转区间 d,并把结果以列表类型赋值给 D

  9. print(A)
  10. print(B)
  11. print(C)
  12. print(D)
复制代码
  1. ('d', 'c', 'b', 'a')
  2. 四,三,二,一
  3. ['蓝', '黄', '红', '白', '黑']      
  4. [5, 4, 3, 2, 1, 0]
复制代码
如题:
  1. ''.join(reversed(s[i])) == s[j]

  2. # ''             表示没有字符隔开,所有元素相连
  3. # reversed(s[i]) 表示翻转字符串 s[i]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2021-10-23 03:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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