如何解决交换 10 的倍数的元素
10 的倍数的元素与列表中下一个位置的值交换。
例如如果列表P的内容是:
[91,50,54,22,30,54]
那么列表P的内容应该变成:
[91,30]
但我得到了类似的信息:
[91,54]
10 的非倍数被重复。
谁能给我一个解决方案。谢谢。
注意:假设连续元素不是 10 的倍数,最后一个元素不是 10 的倍数。
l=[]
c=[]
n=int(input("Enter number of elements:"))
for i in range(1,n+1):
b=int(input("Enter element:"))
l.append(b)
s=len(l)
for i in range(s):
if l[i] % 10 == 0:
c.append(l[i+1])
c.append(l[i])
i+=1
else:
c.append(l[i])
print(c)
解决方法
一种方法:
l = [91,50,54,22,30,54]
pos = 1
while pos < len(l) - 1:
if l[pos] % 10 == 0:
l[pos],l[pos+1] = l[pos+1],l[pos]
pos += 2
else:
pos += 1
print(l)
,
在第二个 for 循环(for i in range (s))下不需要 i += 1,因为循环会在下一次迭代中自动更新 i。为了解决这个问题,你可以在附加到else块之前检查“c”中的元素是否存在。
,在这种情况下,您无法前进,因为您会将目标元素一直移动到最后。避免这种情况的一个很好的技巧是向后循环,这很容易。
免责声明:正如下面 Daniel Hao 所指出的,这不适用于 10 的连续倍数!!
data = [91,54]
for i in reversed(range(len(data))):
if data[i] % 10 == 0:
# move the item one slot to the right
data.insert(i+1,data.pop(i))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。