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

如何从含字母与数字的列表中生成符合条件元素的位置列表?

解决方案

1. 核心:用enumerate()筛选位置

enumerate()是最适合的工具——它能在遍历列表时同时返回元素索引和元素本身,完美解决你需要收集位置的需求,还能避免index()方法遇到重复元素时只返回第一个匹配位置的问题。

先获取输入列表:

input_list = list(input())

用列表推导式快速生成字母和数字的位置列表(也可以写成显式for循环,见下方):

# 收集所有字母的索引
letter_list = [idx for idx, char in enumerate(input_list) if char.isalpha()]
# 收集所有数字的索引
number_list = [idx for idx, char in enumerate(input_list) if char.isdigit()]

如果习惯用显式for循环,也可以这么写:

letter_list = []
number_list = []
for idx, char in enumerate(input_list):
    if char.isalpha():
        letter_list.append(idx)
    elif char.isdigit():
        number_list.append(idx)

2. 后续校验逻辑

检查最左侧字母与最右侧数字的位置关系

用min()取字母列表里最靠左的索引,max()取数字列表里最靠右的索引,然后做判断:

# 先确保两个列表都不为空,避免报错
if letter_list and number_list:
    leftmost_letter = min(letter_list)
    rightmost_number = max(number_list)
    if leftmost_letter > rightmost_number:
        # 这里写不符合要求的处理逻辑,比如提示或终止流程
        print("错误:最左侧字母出现在最右侧数字之后")

避免第一个数字为0

这里的"第一个数字"指的是列表中最靠左的数字,用min(number_list)拿到它的索引,再取对应元素判断:

if number_list:
    first_num_idx = min(number_list)
    first_num = input_list[first_num_idx]
    if first_num == '0':
        # 处理第一个数字为0的情况
        print("错误:第一个数字不能为0")

内容的提问来源于stack exchange,提问作者Kyle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:32:44