当前位置: 首页 > 面试题库 >

使用Python迭代字符串中的每个字符

公西毅
2023-03-14
问题内容

在C ++中,我可以std::string像这样迭代:

std::string str = "Hello World!";

for (int i = 0; i < str.length(); ++i)
{
    std::cout << str[i] << std::endl;
}

如何在Python中遍历字符串?


问题答案:

正如约翰内斯指出的那样,

for c in "string":
    #do something with c

您可以使用struct迭代python中的几乎所有内容for loop

例如,open("file.txt")返回文件对象(并打开文件),对其进行迭代,然后对该文件中的行进行迭代

with open(filename) as f:
    for line in f:
        # do something with line

如果那看起来像魔术,那还算不错,但是它背后的想法真的很简单。

有一个简单的迭代器协议可以应用于任何对象,以使for循环在其上起作用。

只需实现定义一个next()方法的迭代器,然后__iter__在类上实现一个方法使其可迭代即可。(__iter__当然,应返回一个迭代器对象,即定义的对象next()

参阅官方文件



 类似资料:
  • 问题内容: 今天早些时候,我需要一次遍历2个字符的字符串,以解析格式如下的字符串(有一些额外的字母)。 我最终完成了这个工作,但是看起来很丑。我最终评论了它在做什么,因为它感觉不太明显。几乎看起来像是pythonic,但并非完全如此。 有一些更好/更清洁的方法可以做到这一点吗? 问题答案: 邓诺关于清洁剂,但还有另一种选择: 无副本版本:

  • 我试图找到给定字符串的排列,但我想使用迭代。我在网上找到的递归解决方案,我确实理解它,但是将其转换为迭代解决方案真的行不通。下面我附上了我的代码。我真的很感激你的帮助:

  • 问题内容: 是否可以每个字符分割一个字符串? 例如,假设我有一个包含以下内容的字符串: 我怎样才能使它看起来像这样: 问题答案: 192 为了完整起见,你可以使用正则表达式执行此操作: 对于字符的奇数,你可以执行以下操作: 你还可以执行以下操作,以简化较长块的正则表达式: re.finditer如果字符串很长,则可以使用它逐块生成。

  • 问题内容: 我有一个字符串迭代器。 为了进行排序,我需要从中创建一个列表并使用对其进行排序。 有没有简单的方法可以对迭代器进行排序。 问题答案: 迭代器不是容器,它是遍历容器元素的实用程序。因此,如果您仅有权访问迭代器,则无法更改此迭代器的创建者定义的迭代顺序。 如果您不能更改原始容器,则必须将迭代器传递的元素收集到新的Collection中,并在其中进行排序。 (了解迭代器可能的一种好方法是查看

  • 问题内容: 我正在尝试查找给定字符串的排列,但是我想使用迭代。我在网上找到了递归解决方案,但我确实理解它,但是将其转换为迭代解决方案实际上是行不通的。下面附上我的代码。我非常感谢您的帮助: 问题答案: 在我的相关问题评论之后,这是一个Java实现,可以使用Counting QuickPerm Algorithm 来完成您想要的事情:

  • 问题内容: 更新: 在2006年python.org上提出了使内置字符串不可迭代的想法。我的问题有所不同,因为我试图偶尔仅抑制一次此功能。整个线程还是很相关的。 这是Guido的批判性评论,他们在试用的基础上实施了不可重复的操作: […]我实现了这一点(这确实很简单),但是后来发现我不得不修复大量遍历字符串的地方。例如: sre解析器和编译器使用set(“ 0123456789”)之类的东西,并且

  • 问题内容: 我想在Python列表中切片每个字符串。 这是我当前的列表: 这是我想要的结果列表: 我想从列表中的每个字符串中切掉最后两个字符。 我怎样才能做到这一点? 问题答案: 使用列表推导创建一个新列表,并将表达式的结果应用于输入列表中的每个元素;这是最后两个字符的切片,返回其余部分: 演示:

  • 问题内容: 我想在熊猫数据帧的所述列中的每个值的开头附加一个字符串(优雅)。我已经弄清楚了如何做到这一点,目前正在使用: 这似乎是一件微不足道的事情-您是否知道其他方法(也可能将字符添加到该列为0或NaN的行中)? 如果尚不清楚,我想转一下: 变成: 问题答案: df[‘col’] = ‘str’ + df[‘col’].astype(str) 例: