python - 如何在列表中选择随机位置,翻转位,然后浏览下一个项目

标签 python python-3.x

有没有办法选择列表中项目的位置,然后翻转位,例如

pop = ['1010101', '1000101','1001001','1010101,'110001']

然后在列表中的每组项目中随机选择一个位置,并将该位翻转为 0 到 1 或 1 到 0

例如,它将遍历列表中的每个项目并在每个项目中选择随机位置,1010101 将变成 1000101,第二个项目将变成 1000101、1011001 等。

最佳答案

您可以使用random.choice :

import random

random.seed(42)


def flip(s):
    pos = random.choice(range(len(s)))

    r = list(s)
    r[pos] = '1' if r[pos] == '0' else '0'

    return ''.join(r)


pop = ['1010101', '1000101', '1001001', '1010101', '110001']

result = [flip(s) for s in pop]

print(result)

输出

['1010111', '0000101', '0001001', '1010111', '111001']

一切都在 flip 函数内通过 3 个主要步骤完成。

选择随机位置:pos = random.choice(range(len(s)))

更改位置的位。

r = list(s)
r[pos] = '1' if r[pos] == '0' else '0'

最后通过 joining 返回一个新字符串r 的元素,返回 ''.join(r)

进一步

  1. Change one character in a string?
  2. Does Python have a ternary conditional operator?

关于python - 如何在列表中选择随机位置,翻转位,然后浏览下一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697775/

相关文章:

python - scrapy python 请求未定义

Python virtualenv pip 安装 MySQL-Python 导致 "RuntimeError: maximum recursion depth exceeded"

python - 替换序列中的 1's with 0'

python - 如何从仅包含字符串内容的文本文件简单地填充Python3.2中的字典?

python - 如何忽略带引号的字段中的 CSV 分隔符?

python - 为什么我的 pygame Sprite 左边比右边快?

Python - <__main__.MyClass 对象在 0x0000000002B70E10>

python - 如果在 Python 中超出范围,则在列表/数组索引或 "None"处获取值

python - 字符串、整数和前导零

python - 未触发小部件的 "destroyed"信号 (PyQT)