![]() |
1
33
怎么样:
这是
extended slice
语法。它通过做而起作用
|
![]() |
2
1
@保罗的
|
![]() |
3
1
我自己在这个问题上的经验是学术性的。然而,如果你是一个寻找快速答案的专业人士,那么就使用一个循序渐进的片段
或者更容易理解(但由于方法名查找和join在给定迭代器时形成列表的事实,速度较慢),
然后:
更长的解释如果你对学术博览会感兴趣,请继续阅读。 关于Python的字符串,您应该了解以下几点:
下标通过在大括号中包含冒号来创建切片:
要在大括号外创建切片,需要创建切片对象:
使用反向切片要快得多:
但是,对于不太熟悉片段或原作者意图的人来说,我们如何才能使其更具可读性和易懂性?让我们在下标表示法之外创建一个切片对象,给它一个描述性名称,并将其传递给下标表示法。
按功能执行要将其作为函数实际实现,我认为仅使用描述性名称在语义上足够清晰:
用法很简单:
如果你有一个讲师,他们可能希望你从一个空字符串开始,然后从旧字符串建立一个新字符串。您可以使用while循环使用纯语法和文字来实现这一点:
这在理论上是不好的,因为,记住,
字符串是不可变的
-所以每次看起来你都要在你的
最佳做法从理论上讲,更好的方法是在列表中收集子字符串,稍后再加入它们:
以下是时间安排:
may not : |
![]() |
4
0
实例
出身背景提供此答案是为了解决@odigity的以下问题:
问题
解决方案
Python有一个需要注意的特殊情况:字符串是 iterable
排除
简而言之,这意味着字符串中的每个字符都可以作为元素顺序排列的一部分轻松操作,就像其他编程语言中的数组一样。 为了理解这是如何工作的,回顾example02可以提供一个很好的概述。 例02
结论尽管如此,一旦基本原理被理解,这种方法相对于固定字符串操作方法的力量可能是相当有利的。 对于那些不这么认为的人,有其他方法,例如lambda函数、迭代器或简单的一次性函数声明。
另见 |
![]() |
5
0
在现有解决方案的基础上, , 我的解决方案 . 只有在忽略Unicode修饰符/字形集簇的情况下,现有答案才是正确的。稍后我将讨论这个问题,但首先看一下一些反转算法的速度:
您可以看到列表理解的时间(
串反转如果你真的想按常识反转字符串,那就要复杂得多。例如,以下面的字符串为例( brown finger pointing left yellow finger pointing up ).这是两个字母,但有3个unicode代码点。另外一个是 skin modifier
但是如果你用任何一种给定的方法来反转它,你会得到 brown finger pointing up yellow finger pointing left . 这样做的原因是“棕色”颜色修饰符仍然在中间并且被应用到它之前的任何东西。所以我们有
和
Unicode Grapheme Clusters graphemes :
因此正确的答案是
代码
|
![]() |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
![]() |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Manan Girdhar · 拆分字符串并仅在java中使用第二部分 2 年前 |
![]() |
AnxiousLuna · Python使用len()获取数组索引数 2 年前 |
![]() |
antonoyaro8 · 数据帧中每列上的Grepl 2 年前 |