pat 乙类 1005 python

该博客探讨了在Python中正确复制列表以避免循环迭代时的错误。通过实例展示了如何使用切片操作符[:]创建列表副本,并演示了一个涉及数列变换的过程,其中涉及到对数列项进行除2或乘以3加1的操作,直至所有项变为1。博客还提到了在操作过程中如何避免重复项并排序结果。
摘要由CSDN通过智能技术生成
需要复制列表,不然循环迭代会出错。复制列表不能使用"=",使用"="两个列表会指向同一个地址,相当于同一个列表。要使用"=[:]"或者用循环迭代来复制。最后需将列表转化为字符串。
num_list = []
result = []
n = int(input())
number = input().split()        # number = list(int(i) for i in input().split())
for i in number:
    num = int(i)
    num_list.append(num)
dup_list = num_list[:]
for i in num_list:
    while i != 1:
        if i % 2 == 0:
            i /= 2
        else:
            i = (3 * i + 1) / 2
        if i in dup_list:
            dup_list.remove(i)
dup_list.sort(reverse=True)
for i in dup_list:
    i_str = str(i)
    result.append(i_str)
print(' '.join(result))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值