精华内容
下载资源
问答
  • 合并列表

    万次阅读 2019-06-19 10:45:23
    a = [1,5,7,9] b = [2,2,6,8] a.extend(b) print(a) print(a+b)
    a = [1,5,7,9]
    b = [2,2,6,8]
    a.extend(b)
    print(a)
    print(a+b)
    

     

    展开全文
  • 在写agnes算法时,需要合并列表,另外也在函数里使用了全局变量,碰到了一些问题,记录下来方便复习查阅。

    在写agnes算法时,碰到了一些坑,记录如下:

    1. 对于一个二维列表,我想合并里面两个列表。比如初始二维列表为:
     [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    

    合并后为:

    [[4, 5, 6], [1, 2, 3, 4, 5, 6]]
    

    最开始的操作如下:

    test = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    merge = test[0].extend(test[1])
    del test[0]
    del test[1]
    test.append(merge)
    

    输出test为:

    [[4, 5, 6], None]
    

    后来查阅资料发现extend的返回值并不是合并后的列表,啥也不是

    解决:直接将两个列表相加

    test = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    merge = test[0] + test[1]
    del test[0]
    del test[1]
    test.append(merge)
    

    输出为:

    [[4, 5, 6], [1, 2, 3, 4, 5, 6]]
    

    反思:看似写的正确,其实存在很大隐患,因为我是按照顺序合并的,假如我要合并第一个和第三个列表:

    test = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    merge = test[0] + test[2]
    del test[0]
    del test[2]
    test.append(merge)
    

    那么很不幸,会报错:
    在这里插入图片描述
    因为我删除了第一个元素后就只有两个元素了,访问test[2]很显然就是不合法的。
    正确做法:

    test = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    merge = test[0] + test[2]
    test = [test[x] for x in range(len(test)) if x != 0 and x != 2]
    test.append(merge)
    

    输出:

    [[4, 5, 6], [1, 2, 3, 7, 8, 9]]
    

    2.在某个函数内改变了全局变量的值

    def agnes():
        while len(C) > cluster_Num:
            i, j =find_Two_cluster()
            merge = C[i] + C[j]
            C = [C[t] for t in range(len(C)) if t != i and t != j]
            C.append(merge)
    
        for i in range(len(C)):
            X = []
            Y = []
            for j in range(len(C[i])):
                X.append(x[C[i][j]])
                Y.append(y[C[i][j]])
            plt.scatter(X, Y, c=color[i])
    
        plt.legend(['C1', 'C2', 'C3', 'C4'])
        plt.title('agnes')
    
        plt.show()
    

    上述函数agnes中C是一个全局变量,运行后报错:
    在这里插入图片描述
    原因:如果我们在一个函数中改变了某个全局变量的值,那么Python会把该变量当成局部变量处理。
    解决:在函数开始写上:

    global C
    

    上面这句话表面函数里面使用的C就是全局变量C。

    展开全文
  • 列表合并 列表是python中常用的数据结构。两个列表合并成同一个也是非常常见的操作。 用+运算符就可以将两个列表合并,顺序是从左到右依次连接。 下面代码可以做到等价的列表连接操作。不同之处在于+会返回一个新...
    • 列表合并

    列表是python中常用的数据结构。两个列表合并成同一个也是非常常见的操作。

    用+运算符就可以将两个列表合并,顺序是从左到右依次连接。

    下面代码可以做到等价的列表连接操作。不同之处在于+会返回一个新的list,而extend是修改原有list。

    a=[1,2]
    b=[3,4]
    
    c=a+b
    print(c)
    
    a.extend(b)
    print(a)
    • 其他案例:

    Python的列表连接可以将不同类型元素的列表合并成一个列表。

    tuple类型的对象虽然没有extend方法,但仍然支持+运算,可以将两个tuple进行连接。

    如果不是要合并列表,而是需要按位对列表 元素进行加法运算,下面的列表表达式是一种可行的方式。

    展开全文
  • 文章目录27.列表元素的增加`append()`方法 (推荐使用)`+` 运算符操作 (对于操作大量元素不建议使用。)` extend()`方法 相比`+` 运算符 更推荐这种... 但是也可以 用来合并列表方法 3 `extend` 本节前面 也讲过了方法4


    27.列表元素的增加

    列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担。但这 个特点涉及列表元素的大量移动,效率较低。除非必要,我们一般只在列表的尾部添加元素 或删除元素,这会大大提高列表的操作效率

    append()方法 (推荐使用)

    原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用。

    In [1]: a=[10,20]
    
    In [2]: a
    Out[2]: [10, 20]
    
    In [3]: a.append(80)
    
    In [4]: a
    Out[4]: [10, 20, 80]
    In [6]: a.append([50,60])
    # 和 extend 函数 不一样。 这个 是 把 [50,60] 当做一个元素 添加 到列表 尾部
    In [7]: a
    Out[7]: [10, 20, 80, [50, 60]]
    

    + 运算符操作 (对于操作大量元素不建议使用。)

    并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次 复制到新的列表对象中。
    这样,会涉及大量的复制操作,对于操作大量元素不建议使用。
    创建很多新的对象(比较消耗内存)

    列表合并:少量元素的话可以这样执行

    因为这样用比较简便

    In [8]: a=[10,20]
    
    In [9]: id(a)
    Out[9]: 87734672
    
    In [10]: a=a+[50]
    
    In [11]: a
    Out[11]: [10, 20, 50]
    
    In [12]: id(a)
    Out[12]: 128420680
    

    通过如上测试,我们发现变量a 的地址发生了变化。也就是创建了新的列表对象。

    extend()方法 相比+ 运算符 更推荐这种方法

    将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。

    In [13]: a=[10,20]
    
    In [14]: id(a)
    Out[14]: 186343376
    
    In [15]: a.extend([50,60])
    
    In [16]: a
    Out[16]: [10, 20, 50, 60]
    
    In [17]: id(a)
    Out[17]: 186343376 # id 还是 和之前一样。 
    # 这种方式 和 append 是有区别 的 
    # 可以看到 [50,60] 不是作为 一个元素 添加进去的。 
    # 而是 一个一个添加进去。
    # 再举一个例子
    In [18]: a.extend("abc")
    
    In [19]: a
    Out[19]: [10, 20, 50, 60, 'a', 'b', 'c'] # 这种效果 不是我要的 。 当然某些情况下 是我们需要的
    # 但现在不是 
    # 再来看一下 append
    In [20]: a.append("abc")
    
    In [21]: a
    Out[21]: [10, 20, 50, 60, 'a', 'b', 'c', 'abc'] # 所以 尾部 直接将  字符串  abc  添加 进去了。 
    # 这是我要的效果。 
    # 举这个例子 是希望 体现 两者的不同。
    

    insert() 插入元素 (涉及大量元素插入时,尽量避免使用。)

    使用 insert() 方法可以将指定的元素插入到列表对象的任意指定位置。这样会让插入位置后
    面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。类似发生这种
    移动的函数还有:remove()、pop()、del()
    ,它们在删除非尾部元素时也会发生操作位置后
    面元素的移动。

    在尾部操作还是可以的,非尾部尽量避免使用。

    >>> a = [10,20,30]
    >>> a.insert(2,100) # 将元素 100 插入到 索引 2
    >>> a
    [10, 20, 100, 30]
    
    In [24]: a.insert(2,[1,2]) # 当插入的 是一个列表的时候   
    # 和 append 一样 是 将 列表 当做一个元素  插入。
    In [25]: a
    Out[25]: [10, 20, [1, 2], 100, 30]
    

    乘法扩展,这是浅拷贝。 门牌号(id)是一样的。

    使用乘法扩展列表,生成一个新列表,新列表元素时原列表元素的多次重复。

    In [26]: a=["onepis",100]
    
    In [27]: b=a*3
    
    In [28]: b
    Out[28]: ['onepis', 100, 'onepis', 100, 'onepis', 100]
    
    In [29]: a
    Out[29]: ['onepis', 100]
    
    In [30]: a[0]=1
    
    In [31]: b
    Out[31]: ['onepis', 100, 'onepis', 100, 'onepis', 100]
    

    适用于乘法操作的,还有:字符串、元组。
    例如:

    In [33]: c="onepis"
    
    In [34]: d=c*3
    
    In [35]: d
    Out[35]: 'onepisonepisonepis'
    
    In [36]: c
    Out[36]: 'onepis'
    

    列表合并

    方法1 就是 + 就不再 重复了 前面有

    方法2 和 + 差不多 是 sum函数 本来是求和的。 但是也可以 用来合并列表

    In [49]: a=[1,1,3]
    
    In [50]: b=[2,2,2,]
    
    In [53]: sum([a,b],[])
    Out[53]: [1, 1, 3, 2, 2, 2]
    

    方法 3 extend 本节前面 也讲过了

    方法4 切片 slice 覆盖

    In [65]: b=["onepis",222]
    
    In [66]: a=[1,2,3]
    
    In [67]: a
    Out[67]: [1, 2, 3]
    
    In [68]: b
    Out[68]: ['onepis', 222]
    
    In [69]: len(a)
    Out[69]: 3
    
    In [70]: a[len(a):]=b
    
    In [71]: a
    Out[71]: [1, 2, 3, 'onepis', 222]
    

    方法5 append

    本质上 这个 不算是 合并 列表

    我觉得算是追加 因为 是将这个 列表 作为 一个元素 添加 到尾部

    前面 也说过了。 就不再多说。

    方法6 chain

    chain 本质上也算不上 合并

    算是连接 吧 返回的是一个 可迭代对象

    还有就是 chain 不仅仅可以 连接 列表 。

    元组 集合 这些容器 都可以连接

    In [80]: help(chain)
    Help on class chain in module itertools:
    
    class chain(builtins.object)
     |  chain(*iterables) --> chain object # 传入的是一个 可迭代对象就可以
     	 # 返回的是一个  chain 对象
     	 # 可以使用 next 方法 获取 返回元素。
     |
     |  Return a chain object whose .__next__() method returns elements from the
    
    In [73]: from itertools import chain
    
    In [74]: a=[1,2,3]
    
    In [75]: b=['one','pis']
    
    In [76]: chain(a,b)
    Out[76]: <itertools.chain at 0x5fdead0>
    
    In [77]: [*chain(a,b)] # 序列解包
    Out[77]: [1, 2, 3, 'one', 'pis']
    
    
    In [81]: a={"a":1,"b":2} # 需要注意的是 连接的是一个 dict 字典的时候
    # 其实只是 串联了 他们 的 key  。但是value 没有串联。
    
    In [82]: b={"c":3}
    
    In [83]: chain(a,b)
    Out[83]: <itertools.chain at 0x7a74cd0>
    
    In [84]: [*chain(a,b)]
    Out[84]: ['a', 'b', 'c']
    
    

    方法7 利用 * 解包

    In [74]: a=[1,2,3]
    
    In [75]: b=['one','pis']
    
    
    In [79]: [*a,*b]
    Out[79]: [1, 2, 3, 'one', 'pis']
    
    展开全文
  • 合并列表中有相同元素的列表

    千次阅读 2017-03-08 09:08:46
    合并列表中有相同元素的列表问题描述: array = [ [1,2,3],[4,5,6],[3,4],[7,8],[8,9],[6,12,13] ]数组之间具有相同的元素,则数组合并输出:out_array = [[1,2,3,4,5,6,12,13],[7,8,9]]a = [ [1,2,3],[4,5,6],[3,...
  • Python合并列表中的字典内容

    千次阅读 2019-12-20 12:15:43
    Python合并列表中的字典内容数据示例Pandas 示例代码Python代码 【合并列表字典中相同的元素,数据元素相加】 (声明:本教程仅供本人学习使用,如有人使用该技术触犯法律与本人无关) (如果有错误,还希望指出。共同...
  • scala的列表合并List is a collection of immutable data of the same data type. In Scala, the list represents linked-link data structures. 列表是相同数据类型的不可变数据的集合。 在Scala中,该列表表示...
  • LISP---合并列表

    千次阅读 2019-04-10 22:46:28
    LISP中关于合并列表的操作总结: 先来看几个例子: CL-USER 51 : 1 > (setq l1 '(1 2 3)) (1 2 3) CL-USER 52 : 1 > (setq l2 '(4 5 6)) (4 5 6) CL-USER 54 : 1 > (append l1 l2) (1 2 3 4 5 6) CL-...
  • 交错合并列表元素的简单实现方法

    千次阅读 2018-11-23 10:44:13
    编写一个交错合并列表元素的函数。例如:给定的两个列表为[A,B,C,D]和[1,2,3,4],函数返回[A,1,B,2,C,3,D,4]。   二、实现原理: 交替取出两个给定数组中的元素,并顺序存入一个新数组中,得到一个...
  • python练习8----合并列表排序

    千次阅读 2019-07-17 16:13:57
    掌握列表的两个新运用:合并列表和列表排序。 练习要求: 一次测评中,老师将 学习小组A 和 学习小组B 的测评成绩(满分 100 分)从低到高记录放进两个列表: A=[91, 95, 97, 99],B=[92, 93, 96, 98] 。 现在,老师想...
  • 现在,老师想将两个小组的成绩合并为一个列表,并按照从低到高的顺序排序 1、分析问题,明确结果 将两个列表合并 按照从低到高排列 将最终列表打印出来 2、思考需要的知识,或搜索新知识 3、思考切入点 将列表B...
  • python 合并列表的列表

    千次阅读 2015-07-09 11:00:20
    list=[['aa', 'bb'], ['cc', 'dd']] >> print [j for i in list for j in i] ['aa', 'bb', 'cc', 'dd'] >> print sum(list,[]) ['aa', 'bb', 'cc', 'dd'] >> t=[] >> [t.extend(i) for i in list
  • 【python】 合并列表的方法

    万次阅读 2019-02-25 20:18:41
    python中利用非循环的方法将两个List列表中的内容进行合并
  • //编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[1,2,3],函数返回[a,1,B,2,C,3] import java.util.*; public class Test2{ public static void main(String[] args){ ArrayList...
  • a = [1,2,3,4,5,6] for i in range(0,len(a),3): print(a[i]) ...将两个列表合并为一个列表: list1 = [1,2,3] list2 = [4,5,6] for x in range(len(list1)): list1.append(list2[x]) print(list...
  • Python合并列表,append()、extend()

    千次阅读 2019-03-18 15:15:52
    在实际应用中涉及到了列表合并的问题。 在应用append()时,发现列表是以一个元素的形式追加到列表上的,最后查询后用的是extend()方法,下面是区别 1.append()向列表尾部追加一个新元素,列表只占一个索引位,在...
  • 编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[1,2,3],函数返回[a,1,B,2,C,3]。 private static String[] arr1 = { "a", "B", "c", "D", "e" }; private static String[] arr2 = { ...
  • jieba分词相关、join合并列表元素

    千次阅读 2019-04-12 20:20:33
    import jieba str1="今天来到了天安门广场" ...z=[x for x in seg_list] #将分词的结果保存到列表中,可以看到元素是分好的词,列表长度即为分好的词的数量 print("输出2",z) aa=z print("输出3",aa) xx...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 362,094
精华内容 144,837
关键字:

如何合并列表