【问题标题】:Beginner her. Could someone interpret this sentence. Thank you初学者她。谁能解释一下这句话。谢谢
【发布时间】:2021-09-28 15:19:35
【问题描述】:

假设给你一个字符串,你想计算每个字母出现了多少次。有几种方法可以做到:

  1. 您可以创建 26 个变量,每个字母对应一个。然后您可以遍历字符串,并为每个字符增加相应的计数器,可能使用链式条件。

  2. 您可以创建一个包含 26 个元素的列表。然后您可以将每个字符转换为一个数字(使用内置函数 ord),将该数字用作列表中的索引,并增加相应的计数器。

对于第二部分,我不明白使用 ord 函数与索引到列表有什么关系。因为 ord 返回字符的 unicode 而不是索引。谢谢你帮助我。

【问题讨论】:

  • 建议用ord将字符转成整数,然后用整数作为列表的索引。
  • 提示:ord(current character)-ord('a') 将为您提供列表的索引。假设字符串是小写的。
  • 哦,我明白了(思考了一个小时后)......非常感谢您的回复,这个提示真的很有帮助。

标签: python list loops


【解决方案1】:

ord()函数会返回一个字符的ascii值。

第二点说你创建了一个长度为 26 的列表(因为英文字母是 26),每个条目都会有那个字母的频率。

例如:'a' = 0; 'b' = 1;...'z': 25

ord('a') 给出 97 - 'a' 的 ASCII 值。

创建一个包含所有0 的大小为26 的列表

lst = [0] * 26

现在,进入

lst[0]包含字符'a'的频率

lst[1]包含字符'b'的频率

lst[25]包含字符'z'的频率

现在字符a 应该映射到lst[0]。为此,我们执行以下操作

ord('a') - ord('a') 为您提供 97-97 = 0。这是存储 a 频率的索引 - lst[0]

同样,您可以通过 ord(character) - ord('a') 来抵消剩余的字符。

ord('b') - ord('a') = 98-97 = 1; lst[1]

ord('c') - ord('a') = 99-97 = 2; lst[2]

ord('z') - ord('a') = 122 - 97 = 25; lst[25]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-05
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多