【问题标题】:Trying to create a string of bit numbers using for loop in python尝试在python中使用for循环创建一串位数字
【发布时间】:2020-09-08 23:13:51
【问题描述】:
for i in range(len(p)):
    x = ""
    if (p[i] == "1") or (q[i] == "1"):
      x[i] = 1
    else:
      x[i] = 0

到目前为止我有这个。我基本上只是想知道如何连接到字符串 x 以添加更多位,因为 python 字符串是不可变的。我几乎没有开始使用 python,否则我会更好地解释自己

【问题讨论】:

  • 每次迭代都将x 设为空字符串
  • p 和 q 是什么?预期的输出是什么?
  • p 和 q 分别是“1101”和“1001”位。输出应该是另一串位,例如“1101”
  • 字符串连接在任何 Python 字符串教程中都有演示。你哪里出了问题?
  • @WeepingWillow -- 嘿,很抱歉通过对不相关帖子的评论与您联系,但我无法联系到您,因为您删除了另一个问题,因此无法再对其发表评论。有关如何缩短逻辑门演示代码的示例,请参阅 gist.github.com/charles-dyfis-net/…。

标签: python python-3.x string concatenation


【解决方案1】:

1- 创建一个长度为 P 的列表,其中仅包含“0”个元素
2- 使用此列表更改相应索引处的元素
3- 最后,加入列表的元素得到一个字符串

p = "11100011"
q = "00000011"

list_x = ["0"]*len(p)

for i in range(len(p)):
    if (p[i] == "1") or (q[i] == "1"):
      list_x[i] = "1"

str = "".join(list_x)

print (str)

它给你

11100011

更多详情:

这里很重要的一点是索引 i,此方法在您开始字符串的位置(从开头或结尾或任何点)独立工作。
如果您想从字符串的开头开始,那么您可以使用其他人(@Bharel 和@Jab)提出的解决方案。

x = ""
for i in range(len(p)):
    if (p[i] == "1") or (q[i] == "1"):
      x += "1"
    else:
      x += "0"

【讨论】:

    【解决方案2】:

    这应该可行:

    x = ""
    for i in range(len(p)):
        if (p[i] == "1") or (q[i] == "1"):
          x += "1"
        else:
          x += "0"
    

    请记住,我认为同时迭代两者并使用列表会更好:

    x = []
    for i, j in zip(p, q):
        if i == "1" or j == "1":
            x.append("1")
        else:
            x.append("0")
    x = "".join(x)
    

    【讨论】:

    • 好吧,这是有道理的。我从来没有用过拉链。我基本上有 0 次 python 经验,所以我使用的是我对其他语言的了解。
    【解决方案3】:

    为什么不直接使用str.join 和理解。也只需使用zip 同时循环遍历每个字符串:

    ''.join('1' if '1' in g else '0' for g in zip(p, q))
    

    【讨论】:

      猜你喜欢
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 2022-08-19
      • 2021-12-03
      • 1970-01-01
      相关资源
      最近更新 更多