交换 10 的倍数的元素
elements which are multiples of 10 are swapped
10 的倍数的元素与列表中下一个位置的值交换。
例如列表P的内容是:
[91, 50, 54, 22, 30, 54]
那么列表P的内容应该变成:
[91, 54, 50, 22, 54, 30]
但我得到的是:
[91, 54, 50, 54, 22, 54, 30, 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 所指出的,这不适用于十的连续倍数!!
data = [91, 50, 54, 22, 30, 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))
10 的倍数的元素与列表中下一个位置的值交换。
例如列表P的内容是:
[91, 50, 54, 22, 30, 54]
那么列表P的内容应该变成:
[91, 54, 50, 22, 54, 30]
但我得到的是:
[91, 54, 50, 54, 22, 54, 30, 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 所指出的,这不适用于十的连续倍数!!
data = [91, 50, 54, 22, 30, 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))