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

如何在不使用slice和reverse()的情况下仅反转列表中的整数(忽略浮点数与字符串)

嘿,我来帮你搞定这个问题!看起来你当前的程序没正确提取出列表里的整数,才会输出空列表对吧?我们一步步来解决它:

第一步:先准确筛选出所有整数

首先得从输入里把整数挑出来,这里要注意严格区分int和float——比如2.0是浮点数,不能算整数。所以我们遍历输入的每个元素,用type(item) is int来判断,这样能精准筛选出纯整数:

# 先收集所有整数
input_data = (1, 'g', 2.6, 2, 3, 4, 'h', 'dfgs', 'dsgfgdsg', 5)
integers = []
for item in input_data:
    if type(item) is int:
        integers.append(item)
# 此时 integers 是 [1,2,3,4,5]

第二步:手动实现反转(不用内置函数)

接下来要反转这个整数列表,不能用reverse()或者[::-1],我们可以用最简单的“从后往前遍历”的方式,把元素逐个添加到新列表里:

reversed_result = []
# 从最后一个元素的索引开始(len(integers)-1),一直到第一个元素(索引0)
index = len(integers) - 1
while index >= 0:
    reversed_result.append(integers[index])
    index -= 1
# 此时 reversed_result 是 [5,4,3,2,1]

如果喜欢原地反转的方式,也可以用双指针交换首尾元素:

left = 0
right = len(integers) - 1
while left < right:
    # 交换左右指针指向的元素
    integers[left], integers[right] = integers[right], integers[left]
    left += 1
    right -= 1
# 此时 integers 会变成 [5,4,3,2,1]

完整代码整合

把上面的步骤整合成一个函数,适配你的输入输出(元组类型):

def reverse_only_integers(input_tuple):
    # 筛选整数
    integers = []
    for item in input_tuple:
        if type(item) is int:
            integers.append(item)
    
    # 手动反转
    reversed_integers = []
    index = len(integers) - 1
    while index >= 0:
        reversed_integers.append(integers[index])
        index -= 1
    
    # 转成元组返回
    return tuple(reversed_integers)

# 测试你的示例输入
test_input = (1, 'g', 2.6, 2, 3, 4, 'h', 'dfgs', 'dsgfgdsg', 5)
print(reverse_only_integers(test_input))  # 输出:(5, 4, 3, 2, 1)

为什么你之前输出[]?

大概率是筛选整数的条件写错了——比如用了isinstance(item, int)(虽然这个在多数情况下也能用,但如果遇到bool类型会有问题,因为isinstance(True, int)是True),或者根本没正确执行收集整数的逻辑,导致后续反转的是空列表。用type(item) is int能更精准地匹配纯整数类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:47:59