【问题标题】:Splitting string to individual characters using slicing使用切片将字符串拆分为单个字符
【发布时间】:2020-04-29 08:12:09
【问题描述】:

我很困惑以下 python 代码如何使用b[:0] = a 将字符串拆分为单个字符。不应该只是b = ['abc']吗?

a='abc'
b=[]
b[:0]=a
print(b)

输出:

b=[a,b,c]

【问题讨论】:

  • Multiple explanations here 特别是 Casey Kuball 的回答。
  • @aderchox 问题更多是关于为什么这段代码的行为如此

标签: python string split


【解决方案1】:

这是因为list constructor 可用于拆分任何可迭代对象,例如字符串。

你甚至不需要[:0]

list(a) # ['a', 'b', 'c']

或者,

b = []
b[:] = a # ['a', 'b', 'c']

【讨论】:

    【解决方案2】:

    根据Python Doc,每当赋值语句的左侧切片时,python 会执行__setitem__,因此在这种情况下,它将右侧项目放在切片的开头。看看这个例子:

    >>> a = [1,2,3,4]
    >>> b = [5,6,7,8]
    >>> b[3:5] = a
    >>> print(b)
    [5, 6, 7, 1, 2, 3, 4]
    

    【讨论】:

      【解决方案3】:

      这里有两件事在起作用

      当你这样做时

      b[:0] = <something>
      

      东西被插入到列表的开头(这是附加到列表切片)

      如果你这样做了

      b[1:3] = ['a', 'b', 'c']
      

      然后索引12处的项目被右边的项目替换

      尝试以下方法:

      b = []
      b[:0] = [1, 2, 3]
      

      您会注意到右侧的项目插入到列表的开头

      当你这样做时

      b[:0] = "abc"
      

      由于右边的项目必须是一个序列,字符串被解包到['a', 'b', 'c'],然后这些被插入到列表的开头

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        • 2022-09-27
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 1970-01-01
        相关资源
        最近更新 更多