numpy - How to 'unpack' a list or tuple in Python -


i'm writing python program play tic tac toe, using numpy arrays "x" represented 1 , "o" 0. class includes function place mark on board:

import numpy np  class board():     def __init__(self, grid = np.ones((3,3))*np.nan):         self.grid = grid      def place_mark(self, pos, mark):         self.grid[pos[0],pos[1]] = mark 

so that, example,

board = board() board.place_mark([0,1], 1) print board.grid 

yields

[[ nan   1.  nan]  [ nan  nan  nan]  [ nan  nan  nan]] 

i wondering if pos[0], pos[1] argument in place_mark function somehow replaced 'unpacked' contents of pos (which list of length 2). in ruby done using splat operator: *pos, not appear valid syntax in python.

with numpy, there's difference between indexing lists , multi-dimensional indexing. self.grid[[0,1]] equivalent concatenating self.grid[0] , self.grid[1], each 3x1 arrays, 3x2 array.

if use tuples instead of lists indexing, correctly interpreted multi-dimensional indexing: self.grid[(0, 1)] interpreted same self.grid[0, 1].

there * operator unpacking sequences, in context of function arguments only, @ least in python 2. so, lists this:

def place_mark(self, mark, x, y):     self.grid[x, y] = mark  place_mark(1, *[0, 1]) 

nb. (expanded usefulness of * in python 3)


Comments

Popular posts from this blog

Spring Boot + JPA + Hibernate: Unable to locate persister -

go - Golang: panic: runtime error: invalid memory address or nil pointer dereference using bufio.Scanner -

c - double free or corruption (fasttop) -