【问题标题】:continuously join a list of strings to the next list of strings不断地将一个字符串列表加入到下一个字符串列表中
【发布时间】:2017-08-30 04:45:09
【问题描述】:
 x = [[1,2], [3,4], [5,6]]

 y = [i + a.pop(0) for i in a] 
 print(y) 

我想创建一个循环,将每个列表连接到下一个列表,使其看起来像

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

目前我得到的是

  [4, 0, 4, 0], [2, 2, 4, 2]]

【问题讨论】:

  • 这是 Python,对吧?
  • 不确定,但我是为 java 回答的 :)

标签: list loops for-loop join


【解决方案1】:

这是loop-comprehension 的一种方法-

[x[i]+x[i+1] for i in range(len(x)-1)]

示例运行 -

>>> x = [[1,2], [3,4], [5,6]]
>>> [x[i]+x[i+1] for i in range(len(x)-1)]
[[1, 2, 3, 4], [3, 4, 5, 6]]

>>> x = [[1,2], [3,4], [5,6], [7,8], [9,10]]
>>> [x[i]+x[i+1] for i in range(len(x)-1)]
[[1, 2, 3, 4], [3, 4, 5, 6], [5, 6, 7, 8], [7, 8, 9, 10]]

【讨论】:

    【解决方案2】:

    您可以使用以下数据结构

    List<ArrayList<Integer>>
    
    1. 先填充List&lt;ArrayList&lt;Integer&gt;&gt;中的元素
    2. 然后从 i=0 开始循环,添加 List.get(0) 的 i+1 个元素 和 List.get(1) 并存储在 List(0) 中
    3. 重复相同的操作直到 n-2。 List(n-1) 和 List(n-2) 元素将是 加在一起。
    4. 从列表中删除最后一个元素。 (基本上是 n-1 个元素)。

    这段代码应该适合你。

        List<ArrayList<Integer>> listArray = new ArrayList<>();
    
        ArrayList<Integer> list1 = new ArrayList<>();
        ArrayList<Integer> list2 = new ArrayList<>();
        ArrayList<Integer> list3 = new ArrayList<>();
    
        list1.addAll(Arrays.asList(1,2));
        list2.addAll(Arrays.asList(3,4));
        list3.addAll(Arrays.asList(5,6));
    
        listArray.add(list1);
        listArray.add(list2);
        listArray.add(list3);
    
        for (int i= 0; i<listArray.size()-1; i++){
            listArray.get(i).addAll(listArray.get(i+1));
        }
    
        listArray.remove(listArray.size()-1);
    
        System.out.println(listArray);
    

    输出-

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多