python - 通过切片将字符串转换为列表:可能是控制流/语法查询
问题描述
我发现已经将字符串转换为列表的代码,但我试图理解部分 list1[:0]=string
。你能向我解释一下这是如何工作的吗?我理解这[:0]
部分。
我试图理解的是为什么这行是这样写的,因为从左到右阅读它对我来说没有意义。我估计最左边的部分通常是一个变量,它会被分配给它,这将使用 = 符号发生。任何解释都将不胜感激,并对 Noob 问题表示歉意。
# Python code to convert string to list character-wise
def Convert(string):
list1=[]
list1[:0]=string
return list1
str1="ABCD"
print(Convert(str1))
解决方案
啊,但它是一个变量!我们只是在我们的list
(或者更具体地说,我们的sequence
)中添加切片魔法。
如果我们稍微扩展一下示例,就会更容易看到发生了什么:
>>> my_list = []
>>> my_list[:0] = "1234"
>>> my_list
['1', '2', '3', '4']
>>> my_list[:0] = "5678"
>>> my_list
['5', '6', '7', '8', '1', '2', '3', '4']
赋值操作是将sequence
(我们的字符串)的内容分配到列表中直到 index 的位置0
(不包括 index 0
)。Python 会自动在列表的前面腾出空间,sequence
然后插入sequence
str
str
如果我们以我们的例子而不是 slice [:1]
?
>>> my_list[:1] = "ABCD"
>>> my_list
['A', 'B', 'C', 'D', '6', '7', '8', '1', '2', '3', '4']
当我们分配给一个扩展为 index 的切片时1
(包括 index 0
,但不包括 index 1
),您可以看到我们已经5
从列表中丢失了,内容ABCD
被添加到列表的开头。
并从另一个方向证明:
>>> my_list[-1:] = "EFGH"
>>> my_list
['A', 'B', 'C', 'D', '6', '7', '8', '1', '2', '3', 'E', 'F', 'G', 'H']
现在我们插入了从 index 开始的序列-1
(或序列中的最后一项),因此4
在list
.
推荐阅读
- reporting-services - 访问组内的文本框
- python - 从当前元素位置开始嵌套循环到列表末尾
- terraform - Terraform 模板文件在销毁时没有“渲染”属性
- javascript - React 中的摊销函数
- ibm-cloud - 某些预设数据没有任何位置信息
- r - 创建 R 循环
- c# - 使 3d 立方体看起来像一个统一的 2d 矩形
- spring-boot - 没有客户端身份验证。尝试添加适当的身份验证过滤器异常 spring oauth2
- c - 为什么我的 char 指针不存储值?
- c# - 从 TescoLabsApi 接收产品详细信息时,我的 MVC ShoppingCart 应用程序中的 AddtoCart 方法返回 Null: