繁体   English   中英

应用算术运算符在python中列出元素

[英]Applying arithmetic operators to list elements in python

string="hi how are you"
s =string.split()
print(s)
for i in range(len(s)):
    print(s[i])
    s += s[i]
print(s)

我刚开始学习 python,我注意到一些奇怪的东西,这对我来说没有意义。

所以当我做s += s[i]时我不应该得到这样的东西['hi', 'how', 'are', 'you', 'hi', 'how', 'are', 'you']

但相反,我得到了这样的东西: ['hi', 'how', 'are', 'you', 'h', 'i', 'h', 'o', 'w', 'a', 'r', 'e', 'y', 'o', 'u']

为什么要添加单个字母?

我知道我们可以使用 append 函数获得这个['hi', 'how', 'are', 'you', 'hi', 'how', 'are', 'you']但不是+应该做同样的事 ?

列表的+=运算符不会将元素附加到列表,而是连接两个列表。 例如:

a = [1, 2, 3]
b = [2, 3, 4]
>>> a += b # will give you [1, 2, 3, 2, 3, 4]

现在,如果我们尝试使用+运算符来附加元素,它将抛出异常

>>> a += 2
TypeError: 'int' object is not iterable

现在让我们来看看你的情况。 该字符串被解释为字符列表,这就是为什么您尝试执行的操作被视为将列表与字符列表连接起来的原因。

>>> a = [] 
>>> a += "hello"
>>> a

['h', 'e', 'l', 'l', 'o']

实际上没有,实际输出很好,这就是为什么。

当您尝试将“hi”添加到 ['hi', 'how', 'are', 'you'] 时,您是在尝试将字符串添加到字符串列表中。 这应该是一个错误。 但实际上字符串已经是一个字符列表。 您正在做的是有效地将列表添加到列表中,因此 ['hi', 'how', 'are', 'you'] 与“Hi”中的每个字母组合在一起

您想要做的可以通过s.append(s[i])或通过s += [s[i]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM