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

如何同时打印正负索引及其对应元素?求替代方案

问题与解决方案:同时打印元素的正负索引及对应值

需求说明

需要编写Python代码,同时打印元素的正负索引与其对应元素,期望输出格式如下:

(negative index)  (positive index)  (element)
-1                2                 3
-2                1                 2
-3                0                 1

现有问题代码

当前代码运行未达预期,现有代码如下:

t=[]
n=int(input("enter how many elements"))
for i in range(0,n):
    a=int(input("enter element"))
    t.append(a)
t=tuple(t)
print(t)
a=reversed(t)
for i,e in *enumerate(a,-n),*enumerate(t,0):
    print((i),(e))

正确实现方式

现有代码的问题在于:enumerate(reversed(t), -n)会绑定反转后的元素与负索引,导致索引和原元素错位;同时循环合并的写法错误,无法同时对应正负索引和同一元素。

正确思路是:遍历原元组时,对每个元素计算其负索引(负索引公式:-(n - 正索引),n为元素总数),然后按格式打印:

t = []
n = int(input("enter how many elements"))
for i in range(n):
    a = int(input("enter element"))
    t.append(a)
t = tuple(t)

# 打印对齐的表头
print(f"{'(negative index)':<18} {'(positive index)':<18} {'(element)':<10}")
# 遍历每个元素,计算并打印正负索引与元素
for pos_idx, elem in enumerate(t):
    neg_idx = -(n - pos_idx)
    print(f"{neg_idx:<18} {pos_idx:<18} {elem:<10}")

当输入元素1、2、3时,输出将完全匹配期望格式,表头和内容对齐清晰。

替代解决方案

方案1:用zip关联索引序列与元素

直接生成负索引序列(从-1到-n倒序),再通过zip同时绑定负索引、正索引和元素:

t = []
n = int(input("enter how many elements"))
for i in range(n):
    a = int(input("enter element"))
    t.append(a)
t = tuple(t)

# 生成负索引序列:-1, -2, ..., -n
neg_indices = range(-1, -n-1, -1)
pos_indices = range(n)

print(f"{'(negative index)':<18} {'(positive index)':<18} {'(element)':<10}")
for neg_idx, pos_idx, elem in zip(neg_indices, pos_indices, t):
    print(f"{neg_idx:<18} {pos_idx:<18} {elem:<10}")

方案2:预构建索引映射字典(适合需复用索引场景)

先把正负索引和元素存入字典,再遍历打印:

t = []
n = int(input("enter how many elements"))
for i in range(n):
    a = int(input("enter element"))
    t.append(a)
t = tuple(t)

# 构建包含所有索引与元素的映射
index_element_map = {
    "negative_indices": [-(n - i) for i in range(n)],
    "positive_indices": list(range(n)),
    "elements": list(t)
}

print(f"{'(negative index)':<18} {'(positive index)':<18} {'(element)':<10}")
for neg, pos, elem in zip(
    index_element_map["negative_indices"],
    index_element_map["positive_indices"],
    index_element_map["elements"]
):
    print(f"{neg:<18} {pos:<18} {elem:<10}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:30:51