Python将列表中的指定位置的两个元素对调
# 定义一个列表,并将列表中的指定位置的两个元素对调
代码思路:
注:我一般使用函数的时候,我都会先定义主函数,根据主函数的需求,再去补全其他函数。每一个人写代码的习惯不同,我这样写,觉得不会落下东西,思路会更加的清晰。
①第一步,定义主函数,构建手动输入的数组
def main():
# 输入数组
list_1 = input("请输入数组(直接输入数字,不要空格!!!):")
new_list = []
for i in list_1.strip():
new_list.append(int(i))
print(f"您所设置的数组:{new_list}")
注:输入数组时,直接输入数字就可以。
我想要实现的另一段代码(目前我的能力有限,还不能写出来,欢迎大家用自己的思路让这个案例更加完整):当输入的数组不符合条件时,应该有的应对措施。
②第二步,接下来设置指定位置的两个元素对调;
# 输入交换的数字位数
print("请输入的你想交换的数字位数!输入的数字小于列数组的长度!!!")
# 通过while循环,来处理数字输入过大的情况
while True:
x = int(input("请输入第一个想要交换位置的元素:")) - 1
y = int(input("请输入第二个想要交换位置的元素:")) - 1
if x - 1 <= len(new_list) and y - 1 <= len(new_list):
Duidiao = duidiao(new_list, x, y)
print(f"列表中的指定位置的两个元素对调后:{Duidiao}")
break
else:
print("您输入的数字不符合规范!请重新输入!(输入的数字小于列数组的长度!!!)")
continue
注:输入的数字大于数组的长度,会导致程序无法进行。所以,面对输入过大的数字,我采取了应对措施:采用 while循环。
③第三步, 在以上主函数 main() 的书写中,涉及到了自定义对调函数(为了防止遗忘其功能,我一直都是采取汉语拼音的方式来自定义函数名,方便以后查看) duiiao() ,接下来,要设置其对调功能;
def duidiao(new_list, x, y):
new_list[x], new_list[y] = new_list[y], new_list[x]
return new_list
④第四步,测试函数。
if __name__ == '__main__':
main()
注:全部代码如:
# Python将列表中的指定位置的两个元素对调
# 定义一个列表,并将列表中的指定位置的两个元素对调
def duidiao(new_list, x, y):
new_list[x], new_list[y] = new_list[y], new_list[x]
return new_list
def main():
# 输入数组
list_1 = input("请输入数组(直接输入数字,不要空格!!!):")
new_list = []
for i in list_1.strip():
new_list.append(int(i))
print(f"您所设置的数组:{new_list}")
# 输入交换的数字位数
print("请输入的你想交换的数字位数!输入的数字小于列数组的长度!!!")
# 通过while循环,来处理数字输入过大的情况
while True:
x = int(input("请输入第一个想要交换位置的元素:")) - 1
y = int(input("请输入第二个想要交换位置的元素:")) - 1
if x - 1 <= len(new_list) and y - 1 <= len(new_list):
Duidiao = duidiao(new_list, x, y)
print(f"列表中的指定位置的两个元素对调后:{Duidiao}")
break
else:
print("您输入的数字不符合规范!请重新输入!(输入的数字小于列数组的长度!!!)")
continue
if __name__ == '__main__':
main()
结果1:
请输入数组(直接输入数字,不要空格!!!):45895
您所设置的数组:[4, 5, 8, 9, 5]
请输入的你想交换的数字位数!输入的数字小于列数组的长度!!!
请输入第一个想要交换位置的元素:1
请输入第二个想要交换位置的元素:2
列表中的指定位置的两个元素对调后:[5, 4, 8, 9, 5]
结果2:
请输入数组(直接输入数字,不要空格!!!):5789
您所设置的数组:[5, 7, 8, 9]
请输入的你想交换的数字位数!输入的数字小于列数组的长度!!!
请输入第一个想要交换位置的元素:57
请输入第二个想要交换位置的元素:97
您输入的数字不符合规范!请重新输入!(输入的数字小于列数组的长度!!!)
请输入第一个想要交换位置的元素:3
请输入第二个想要交换位置的元素:2
列表中的指定位置的两个元素对调后:[5, 8, 7, 9]
注:案例的源代码如下:
# Python将列表中的指定位置的两个元素对调
# 定义一个列表,并将列表中的指定位置的两个元素对调
def SwapPosition(NumList, num1, num2):
"""
元素对调
"""
NumList[num1], NumList[num2] = NumList[num2], NumList[num1]
return NumList
def main():
# 请输入一串数组
arr = input("请输入数组,每个数以空格分隔:")
NumList = [int(n) for n in arr.split()]
# 请输入要对调的位置
print(f"请输入要对调的位置,从1开始,注意最大不能大于{len(NumList)}")
num1 = int(input("请输入第一个位置:")) - 1
num2 = int(input("请输入第二个位置:")) - 1
# 对调元素
SwapList = SwapPosition(NumList, num1, num2)
# 打印对调后的数组
print(SwapList)
if __name__ == '__main__':
main()
结果:
请输入数组,每个数以空格分隔:5 4 6 9
请输入要对调的位置,从1开始,注意最大不能大于4
请输入第一个位置:2
请输入第二个位置:3
[5, 6, 4, 9]