在2D列表中交换两列

时间:2017-11-25 23:14:39

标签: python list nested-lists

最快捷的方式是什么:

Traceback (most recent call last):
File "/home/mininet/pox/pox/lib/revent/revent.py", line 231, in 
raiseEventNoErrors
return self.raiseEvent(event, *args, **kw)
File "/home/mininet/pox/pox/lib/revent/revent.py", line 278, in raiseEvent
rv = event._invoke(handler, *args, **kw)
File "/home/mininet/pox/pox/lib/revent/revent.py", line 156, in _invoke
return handler(self, *args, **kw)
File "/home/mininet/pox/ext/ents_loadbalancer.py", line 307, in 
_handle_PacketIn
server = self._pick_server(key, inport)
File "/home/mininet/pox/ext/ents_loadbalancer.py", line 203, in _pick_server
if (scount1 < server1wt):
NameError: global name 'scount1' is not defined

从:

[[0, 2, 0, 0],\
[0, 2, 0, 0],\
[0, 2, 0, 0],\
[0, 2, 0, 0]]

不使用numpy或任何其他外部库

3 个答案:

答案 0 :(得分:1)

如果没有用勺子给你答案,请考虑清单BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address)。有两种可能的选择:

选项1
此方法涉及迭代每一行并交换列。

  1. 使用l循环
  2. l的每一行进行迭代
  3. 对于每一行,将1 st 元素与2 nd
  4. 交换

    这很简单。

    选项2
    此方法使用转置。

    1. 转置您的列表以获取for,因为使用转置更容易。使用反l' = l.T技术来执行此操作
    2. 使用2 nd (从0开始的索引)交换1 st 行以获取zip
    3. 再次转置l'',以获取l''

答案 1 :(得分:0)

我们假设我们有一个func makeRequest(withURL url:URL, headers: [String:String], completion: @escaping RequestCompletion) { Alamofire.request(url, method: .get, encoding: JSONEncoding.prettyPrinted, headers: headers).responseJSON { response in guard response.result.error == nil, response.result.value != nil else { completion(nil, response.result.error) return } switch (response.result) { case .success: if let resultValue = response.result.value { let json = JSON(resultValue) completion(json, nil) } break case .failure(let error): print("error - > \n \(error.localizedDescription) \n") completion(nil, error) break } } } 列表,l,我们希望将所有元素都移到左边。

首先,除了第一个元素之外,我们需要将所有元素都放到右边。列表切片[0, 0, 2, 0]可以在此处使用,这将获得l[1:]

其次,我们需要使用[0, 2, 0]获取左侧的剩余元素,这将获得l[1:]

您现在可以看到我们可以将元素向左移动一个位置,同时将上述两个列表添加到一起:

[0]

可以在此函数中总结:

>>> lst = [0, 0, 2, 0]
>>> first = lst[1:]
>>> second = lst[:1]
>>> first + second
[0, 2, 0, 0]

由于这可以移动一个列表位置,因此它可以应用于嵌套列表中的所有列表,并将其位置向左移动1:

def shift(lst, n):
    return lst[n:] + lst[:n]

答案 2 :(得分:0)

针对您的具体任务:

l = [[0, 2, 0, 0], [0, 2, 0, 0], [0, 2, 0, 0], [0, 2, 0, 0]]

for arr in l:
    arr[1], arr[2] = arr[2], arr[1]