【问题标题】:Is there a way to change the position of an element of a list iteratively in python?有没有办法在python中迭代地改变列表元素的位置?
【发布时间】:2021-04-03 04:12:17
【问题描述】:
swepttour = [
    (39.57, 26.15), (36.26, 23.12), (40.56, 25.32), (37.52, 20.44), 
    (38.24, 20.42), (39.36, 19.56), (37.51, 15.17), (35.49, 14.32), 
    (38.15, 15.35), (38.47, 15.13), (38.42, 13.11), (37.56, 12.19), 
    (41.17, 13.05), (33.48, 10.54), (41.23, 9.1), (36.08, -5.21), 
    (39.57, 26.15)
]

我有这样一个列表,我想迭代地更改第二个元素(索引 1 处的元素)的位置。例如;

迭代 1:

swepttour = [
    (39.57, 26.15), (40.56, 25.32), (36.26, 23.12), (37.52, 20.44), 
    (38.24, 20.42), (39.36, 19.56), (37.51, 15.17), (35.49, 14.32), 
    (38.15, 15.35), (38.47, 15.13), (38.42, 13.11), (37.56, 12.19), 
    (41.17, 13.05), (33.48, 10.54), (41.23, 9.1), (36.08, -5.21), 
    (39.57, 26.15)
]

迭代 2:

swepttour = [
    (39.57, 26.15), (40.56, 25.32), (37.52, 20.44), (36.26, 23.12),    
    (38.24, 20.42), (39.36, 19.56), (37.51, 15.17), (35.49, 14.32), 
    (38.15, 15.35), (38.47, 15.13), (38.42, 13.11), (37.56, 12.19), 
    (41.17, 13.05), (33.48, 10.54), (41.23, 9.1), (36.08, -5.21), 
    (39.57, 26.15)
]

有办法吗?第一个和最后一个元素必须是稳定的。

【问题讨论】:

  • 是的。首先你应该自己尝试一下。如果您有特定问题,可以在这里使用您的代码询问。
  • 使用索引进行迭代(使用range())而不是列表本身,并且仅按索引交换元素。
  • 提示:你可以用swepttour[index1], swepttour[index2] = swepttour[index2], swepttour[index1]交换元素

标签: python python-3.x list loops arraylist


【解决方案1】:

您可以替换列表的切片,这是转换它们的常用方法。遍历列表并用交换的相同 2 个元素替换 2 个元素序列。一、从数据入手

swepttour = [
    (39.57, 26.15), (36.26, 23.12), (40.56, 25.32), (37.52, 20.44), 
    (38.24, 20.42), (39.36, 19.56), (37.51, 15.17), (35.49, 14.32), 
    (38.15, 15.35), (38.47, 15.13), (38.42, 13.11), (37.56, 12.19), 
    (41.17, 13.05), (33.48, 10.54), (41.23, 9.1), (36.08, -5.21), 
    (39.57, 26.15)
]

然后去掉它以支持使示例更容易在操作中看到的序列

swepttour = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']

然后遍历索引范围并交换 2 个元素切片

print(swepttour)
for i in range(1, len(swepttour)-2):
    swepttour[i:i+2] = swepttour[i+1], swepttour[i]
    print(swepttour)

【讨论】:

  • 非常感谢先生,我真的很感激。与上面建议的不同,我实际上尝试过,但效果不佳,所以我不想分享一段无用的代码......再次非常感谢您
猜你喜欢
  • 2014-03-02
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 2020-10-18
  • 2016-09-23
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
相关资源
最近更新 更多