【问题标题】:How to count numbers in a list via certain rules?如何通过某些规则计算列表中的数字?
【发布时间】:2018-01-24 23:23:14
【问题描述】:

只是说我有一个 str 和一个 str 列表,我想计算一个 str 中包含的列表中有多少 str。有没有优雅的方法来做到这一点?

例如,

l = {"foo", "bar", "what"}
str = "foobar"

输出将是 2。

我现在这样做的方法是迭代列表并查看 str.contains(str_in_list)

【问题讨论】:

  • 你没有列表,那是一组。

标签: python string


【解决方案1】:

sum(s in my_string for s in l)

【讨论】:

  • 你可以省略列表推导,直接在其中使用生成器表达式。例如。省略括号。请参阅下面的答案。
【解决方案2】:

这是一个简单的例子,

l = ["foo", "bar", "what"]
st = "foobar"

count = 0
for _string in l:
    if _string in st:
        count += 1

print(count)

【讨论】:

  • style-nitpick:我不会使用 each_string 作为你的迭代器变量名 - 请注意,你的内部条件现在会给人错误的印象 if each_string in st,而它实际上是“if string in st”
【解决方案3】:

使用次数:

l = {"foo", "bar", "what"}
str = "foobar"
c = [item in str for item in l].count(True)

在我看来,这是最易读的版本。 item in str 表示检查item 是否是str 的子字符串。 for item in l 意味着它应该遍历 l 中的每个列表项(顺便说一句,变量名不使用小写 L,因为它在许多字体中看起来几乎与数字 1 相同)。最后.count(True) 返回True 在列表中存在的次数。

【讨论】:

    【解决方案4】:

    另一种解决方案

    count = sum(item in str for item in l)
    

    【讨论】:

    • 或者更好,只是sum(item in str for item in l)
    • 是的。我总是忘记True1的特殊版本。
    猜你喜欢
    • 1970-01-01
    • 2012-11-02
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2021-07-04
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多