Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何+;=使用集合和列表_Python_List_Set_Python 3.4 - Fatal编程技术网

Python 如何+;=使用集合和列表

Python 如何+;=使用集合和列表,python,list,set,python-3.4,Python,List,Set,Python 3.4,我得到一个连接列表和集合的有线情况。 例如,我有一个列表和一套 l = [1, 2, 3] s = {1, 2, 3, 4, 5} 当我运行如下代码时: l + s 我有一个错误(这是预料到的) TypeError:只能将列表(非“设置”)连接到列表 但当我使用+=时,我得到了结果 l += s # [1, 2, 3, 1, 2, 3, 4, 5] 我知道这是有区别的。在第一种情况下,我调用方法operator.add(l,s),在第二种情况下调用方法l.\uu iadd\uu(s)。

我得到一个连接列表和集合的有线情况。 例如,我有一个列表和一套

l = [1, 2, 3]
s = {1, 2, 3, 4, 5}
当我运行如下代码时:

l + s
我有一个错误(这是预料到的)

TypeError:只能将列表(非“设置”)连接到列表

但当我使用
+=
时,我得到了结果

l += s  # [1, 2, 3, 1, 2, 3, 4, 5]
我知道这是有区别的。在第一种情况下,我调用方法
operator.add(l,s)
,在第二种情况下调用方法
l.\uu iadd\uu(s)
。 但是有人能解释为什么会有两种不同的结果吗?为什么
\uuu iadd\uuu
更改类型,但
添加()
引发异常

更新

@Jon Clements关于
list.extend
的观点是正确的。从

列表。扩展(L)

通过追加给定列表中的所有项来扩展列表。相当于a[len(a):]=L


最后,
l[len(s):]=s
像一个符咒一样工作

l+s
=half-list-half-set。这不管用
l+=s
=一个列表向其中添加了一组值。它将工作
list
s
+=
有效地调用
list。将任何iterable作为
+=
的extend
应该是一个就地操作,在这种情况下,可以通过调用
.extend
而不是执行
var=var+var2
(如果变量类型不兼容,则会失败)(实际上是
list.\uu iadd\uu==list.extend
)不确定,但我认为这是因为
l+s
不清楚结果应该是什么类型,因此Python就像“dude you do”,而
l+=s
则清楚您想要什么(修改列表)所以Python就这么做了。@StefanPochmann这是不对的,因为当你试图调用“某个字符串”时+=12,它会给你一个异常。但是很明显,你想要一个字符串变量。@OleksandrDashkov在这种情况下,有一个不同的问题,即Python不知道如何将int转换为字符串以便将其附加到字符串中。将数字转换为字符串至少有两种标准方法:
str(12)
chr(12)
l+s
=半列表半集。它不起作用。
l+=s
=一个列表向它添加了一组值。它将起作用
list
s
+=
有效地调用
列表。扩展
将任何iterable作为
+=/code>应该是一个就地操作,在这种情况下,可以通过calli实现ng
.extend
而不是执行
var=var+var2
(如果变量的类型不兼容,则会失败)(实际上是
list.\uuu\iadd\uuu==list.extend
)不确定,但我认为这是因为使用
l+s
不清楚结果应该是什么类型,因此Python就像“老兄,你在做什么”,而使用
l+=s
很清楚您想要什么(修改列表),所以Python就这么做了。@StefanPochmann这是不对的,因为当您尝试调用“some string”时+=12,它会给你一个异常。但是很明显,你想要一个字符串变量。@OleksandrDashkov在这种情况下,有一个不同的问题,即Python不知道如何将int转换为字符串以便将其附加到字符串中。将数字转换为字符串至少有两种标准方法:
str(12)
chr(12)