【问题标题】:Inversion operator to invert list from random points [duplicate]反转运算符从随机点反转列表[重复]
【发布时间】:2020-02-14 00:50:50
【问题描述】:

有没有办法从一些随机索引中反转列表数据。 我不想颠倒整个列表,只是其中的一部分。 就像,我们有输入列表 a=[4,3,6,2,1,5,7,8] 和输出列表 a' = [4,3,5,1,2,6,7,8] 反演点可以在任何地方,最好是随机选择。

【问题讨论】:

标签: python python-3.x list pycharm


【解决方案1】:

有没有可能,你可以生成2个随机数并用它们来选择a的不同索引

import random

a = [4,3,6,2,1,5,7,8]

b = random.randint(0,len(a))
c = random.randint(0,len(a))
while c == b :
    c = random.randint(0,len(a))

tmp = a[b]
a[b] = a[c]
a[c] = tmp
print(a)

编辑: Whit索引之间的反转

import random

a = [4,3,6,2,1,5,7,8]


len_a = len(a)-1

b = random.randint(0,len_a)
c = random.randint(0,len_a)
while c == b :
    c = random.randint(0,len_a)

if(b < c):
    min = b
    max = c
else:
    min = c
    max = b

print(f"{min} {max}")

new_list = a[0:min]

if(min == 0):
    for number in a[max::-1]:
        new_list.append(number)
else:
    for number in a[max:min-1:-1]:
        new_list.append(number)



if(max != len(a)):
    for number in a[max+1:len_a+1]:
        new_list.append(number)

print(f"a = \t\t{a}")
print(f"new_list = \t{new_list}")

输出:

4 6
a =             [4, 3, 6, 2, 1, 5, 7, 8]
new_list =      [4, 3, 6, 2, 7, 5, 1, 8]

【讨论】:

  • 这只会替换两个不同的索引。我想反转这两个索引之间的列表部分,例如; a = [4,3,6,2,1,5,7,8] 因此,如果 b = 3 且 c=1,则 a'=[4,1,2,6,3,5,7, 8]
猜你喜欢
  • 2022-01-16
  • 2021-09-06
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 2020-12-18
  • 2017-02-27
  • 2019-07-05
  • 1970-01-01
相关资源
最近更新 更多