You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:统计列表中每个元素内数字'1'的出现次数

Got it, let's tackle how to count the number of times the digit '1' shows up in each element of a list. I'll walk you through a few straightforward approaches, starting with Python since it's the go-to for these quick data tasks.

方法1:直观遍历+字符串统计(新手友好)

This is the easiest approach to wrap your head around—we'll loop through each item in the list, convert it to a string (so we can handle both numbers and string elements uniformly), then use Python's built-in count() method to tally up the '1's.

Here's a working example:

# Your sample list (mix of numbers and strings works!)
my_list = [1231, '415', 111, 'abc1def', 0]

# Store results as pairs of (original item, count of '1's)
count_results = []
for item in my_list:
    str_item = str(item)
    one_count = str_item.count('1')
    count_results.append((item, one_count))

# Print out the results clearly
for item, cnt in count_results:
    print(f"Element {item} has {cnt} occurrence(s) of '1'")

Running this will output:

Element 1231 has 2 occurrence(s) of '1'
Element 415 has 1 occurrence(s) of '1'
Element 111 has 3 occurrence(s) of '1'
Element abc1def has 1 occurrence(s) of '1'
Element 0 has 0 occurrence(s) of '1'
方法2:列表推导式(简洁版)

If you prefer more concise code (and who doesn't, sometimes?), you can cram the logic into a single list comprehension. It does the exact same thing as the loop above, just in one line:

my_list = [1231, '415', 111, 'abc1def', 0]
count_list = [(item, str(item).count('1')) for item in my_list]

# Output the results directly
print(count_list)
# Returns: [(1231, 2), ('415', 1), (111, 3), ('abc1def', 1), (0, 0)]
方法3:处理嵌套列表(如果你的列表有层级)

If your list has nested sublists (like [121, [11, 'a1b'], '123']), we can use a recursive function to dig into those sub-elements and count all the '1's:

def count_ones(element):
    # If we hit a sublist, recurse through each item inside it
    if isinstance(element, list):
        total = 0
        for sub_item in element:
            total += count_ones(sub_item)
        return total
    # For regular items, convert to string and count
    else:
        return str(element).count('1')

# Example nested list
nested_list = [121, [11, 'a1b'], '123']
results = [(item, count_ones(item)) for item in nested_list]

print(results)
# Returns: [(121, 2), ([11, 'a1b'], 3), ('123', 1)]

Quick Notes:

  • If your list contains boolean values (True/False), converting them to strings will give you "True" or "False"—these don't include the digit '1', so they won't add to your count. If you need to handle these cases specially, just add a quick isinstance() check.
  • This approach counts the digit '1' as a character—if you meant counting the integer value 1 (e.g., in a list like [1, [1, 2], 3]), the logic would be slightly different, but based on your question, this should be exactly what you need.

内容的提问来源于stack exchange,提问作者D.Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:51:05