Below, in my adjacency matrix method I've created 2 arrays that produce the same results, but when changing values within the arrays I get 2 different results. The one labeled &quot;array_matrixx&quot; was my initial attempt, but altering values within a nested list would not just change one of the list, but would in fact change all of the nested list. On the other hand, the array labeled &quot;array_matrix&quot; uses a different approach to filling the array with zero's, and yields the correct result of changing the indices within the correct nested lists. Why would this occur if prior to the for loop, they are identical? I've listed all of the code needed to run the two lists to make comparisons. Just comment one or the other out. class Node(object):     def __init__(self, value):         self.value = value         self.edges = []  class Edge(object):     def __init__(self, value, node_from, node_to):         self.value = value         self.node_from = node_from         self.node_to = node_to  class Graph(object):     def __init__(self, nodes=[], edges=[]):         self.nodes = nodes         self.edges = edges      def insert_node(self, new_node_val):         new_node = Node(new_node_val)         self.nodes.append(new_node)              def insert_edge(self, new_edge_val, node_from_val, node_to_val):         from_found = None         to_found = None         for node in self.nodes:             if node_from_val == node.value:                 from_found = node             if node_to_val == node.value:                 to_found = node         if from_found == None:             from_found = Node(node_from_val)             self.nodes.append(from_found)         if to_found == None:             to_found = Node(node_to_val)             self.nodes.append(to_found)         new_edge = Edge(new_edge_val, from_found, to_found)         from_found.edges.append(new_edge)         to_found.edges.append(new_edge)         self.edges.append(new_edge)          def get_adjacency_matrix(self):         max_index = self.find_max_index()         adjacency_matrixx = [([0] * (max_index + 1))] * (max_index + 1)         print(adjacency_matrixx)         adjacency_matrix = [[0 for i in range(max_index + 1)] for j in range(max_index + 1)]         print(adjacency_matrix)         for edge_object in self.edges:             adjacency_matrix[edge_object.node_from.value][edge_object.node_to.value] = edge_object.value         return adjacency_matrix                   def find_max_index(self):         max_index = -1         if len(self.nodes):             for node in self.nodes:                 if node.value &gt; max_index:                     max_index = node.value         return max_index  graph = Graph() graph.insert_edge(100, 1, 2) graph.insert_edge(101, 1, 3) graph.insert_edge(102, 1, 4) graph.insert_edge(103, 3, 4)  # Should be [[0, 0, 0, 0, 0], [0, 0, 100, 101, 102], [0, 0, 0, 0, 0], [0, 0, 0, 0, 103], [0, 0, 0, 0, 0]] print(graph.get_adjacency_matrix())
410
I needed to create a list of lists in Python, so I typed the following: my_list = [[1] * 4] * 3  The list looked like this: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]    Then I changed one of the innermost values: my_list[0][0] = 5  Now my list looks like this: [[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]    which is not what I wanted or expected. Can someone please explain what's going on, and how to get around it?
2267
What's the difference between the list methods append() and extend()?
67149
I'm trying to create an array of arrays that will be using repeated data, something like below:  int[] list1 = new int[4] { 1, 2, 3, 4 }; int[] list2 = new int[4] { 5, 6, 7, 8 }; int[] list3 = new int[4] { 1, 3, 2, 1 }; int[] list4 = new int[4] { 5, 4, 3, 2 };  int[,] lists = new int[4, 4] {  list1 ,  list2 ,  list3 ,  list4  };   I can't get it to work and so I'm wondering if I'm approaching this wrong.   What I'm attempting to do is create some sort of method to create a long list of the values so I can process them in a specific order, repeatedly. Something like,  int[,] lists = new int[90,4] { list1, list1, list3, list1, list2, (and so on)};  for (int i = 0; i &lt; 90; ++i) {    doStuff(lists[i]); }   and have the arrays passed to doStuff() in order. Am I going about this entirely wrong, or am I missing something for creating the array of arrays?
44787
If you are creating a 1d array, you can implement it as a List, or else use the 'array' module in the standard library.  I have always used Lists for 1d arrays.  What is the reason or circumstance where I would want to use the array module instead?  Is it for performance and memory optimization, or am I missing something obvious?
17923
I have an array in the form of 'int[][]' that represents the co-ordinates of a small grid. Each co-ordinate has been assigned its own value. eg array[0][4] = 28......  I have two questions. Firstly, how do I iterate through all the stored values. Secondly, I want to be able to input a value and have its specific co-ordinates in the grid returned. What would be the best way to approach this?  Thank you for any help!
113672
For example:  &gt;&gt;&gt; x = [1, 1, 2, 'a', 'a', 3] &gt;&gt;&gt; unique(x) [1, 2, 'a', 3]   Assume list elements are hashable.  Clarification: The result should keep the first duplicate in the list. For example, [1, 2, 3, 2, 3, 1] becomes [1, 2, 3].
6976
What's the simplest, most standard, and/or most efficient way to split a List into two sub-Lists in Java? It's OK to mutate the original List, so no copying should be necessary. The method signature could be  /** Split a list into two sublists. The original list will be modified to  * have size i and will contain exactly the same elements at indices 0   * through i-1 as it had originally; the returned list will have size   * len-i (where len is the size of the original list before the call)   * and will have the same elements at indices 0 through len-(i+1) as   * the original list had at indices i through len-1.  */ &lt;T&gt; List&lt;T&gt; split(List&lt;T&gt; list, int i);   [EDIT] List.subList returns a view on the original list, which becomes invalid if the original is modified. So split can't use subList unless it also dispenses with the original reference (or, as in Marc Novakowski's answer, uses subList but immediately copies the result).
52671
So I was reading "Resistance Distance" (D. J. Klein, M. Randić) (Journal of Mathematical Chemistry 12(1993)81-95) when I came up with strange notation.  From the paper:  The graph adjacency matrix is defined as: $$A_{xy} = (x|A|y) =  \begin{cases} 1/r_{xy} &amp; x \sim y \\ 0 &amp; \text{otherwise}  \end{cases}$$  The graph degree matrix of a graph is defined as:  $$\Delta_{xy} = (x|\Delta|y) = \delta(x,y) \sum_{z}^{\sim x} 1/r_{xy}$$  $$ |\phi) \equiv \sum_x |x)  $$  My main question is what does the combination of the vertical bar parentheses mean. Thanks in advance.
86980
I've only just started studying the Blender Python API. I'm writing a script (see below) to automate something I've done by hand : joining two adjacent cubes and cleaning up the resulting mesh.   After joining and removing doubles, I expect to have 12 vertices instead of 16 in the resulting object. In the Info header, this seems to be the case, but when I print to the windows terminal I still see 16. Also I do see the output from remove_double(), here's a screenshot :    So what's wrong here ? What is the right way to access an object's mesh, and count its vertices ?  Joao  import bpy  # Create two adjacent cubes and join them bpy.ops.mesh.primitive_cube_add(location=(1,0,0)) ob = bpy.context.object bpy.ops.mesh.primitive_cube_add(location=(3,0,0)) ob.select = True bpy.ops.object.join()  # Expect 16 vertices, 24 edges, 12 faces result = bpy.context.object print(str(len(result.data.vertices)))  # Go to edit mode, remove double vertices bpy.ops.object.mode_set(mode = 'EDIT') bpy.ops.mesh.remove_doubles()  # Expect 12 vertices, 20 edges, 11 faces result = bpy.context.object print(str(len(result.data.vertices)))
80428
I have a class like this:  public class myClass {   public List&lt;myOtherClass&gt; anewlist = new List&lt;myOtherClass&gt;;    public void addToList(myOtherClass tmp)   {     anewList.Add(tmp);   }  }   So I call "addToList" a hundred times, each adding a unique item to the list.  I've tested my items to show that before I run the "addToList" method, they are unique.  I even put a line in to test "tmp" to make sure it was what I was expecting.  However, when I do this (lets say myClass object is called tmpClass):  int i = tmpClass.anewList.Count(); for (int j = 0; j&lt;i; j++) {    //write out each member of the list based on index j... }   I get the same exact item, and it's the last one that was written into my list.  It's as if when I add, I'm overwriting the entire list with the last item I've added.    Help?  This makes no sense. I've also tried List.Insert, where I'm always inserting at the end or at index 0.  Still no dice.  Yes, I'm doubly source my indexing is correct and when I do my test I'm indexing through each of the elements.  :)  UPDATE: Okay, I tried this and still had the same problem:  foreach(myOtherClass tmpC in tmpClass.anewList) {         Console.WriteLine(tmpC.theStringInMyClass.ToString()); }   and still for each of the 100 items, I got the same string output... I'm sure I'm doing something completely stupid, but I don't know what yet. I'm still 100% sure that the right string is getting passed in to begin with.  -Adeena    Okay, I tried this and still had the same problem:  foreach(myOtherClass tmpC in tmpClass.anewList) {     Console.WriteLine(tmpC.theStringInMyClass.ToString()); }   and still for each of the 100 items, I got the same string output...  I'm sure I'm doing something completely stupid, but I don't know what yet. I'm still 100% sure that the right string is getting passed in to begin with.  -Adeena
33748
What is the difference between int *a[3] and int (*a)[3]?
29728
In other words, can I do something like  for() {     for {        for {        }     } }   Except N times? In other words, when the method creating the loops is called, it is given some parameter N, and the method would then create N of these loops nested one in another?  Of course, the idea is that there should be an "easy" or "the usual" way of doing it. I already have an idea for a very complicated one.
75161
I have shown that two of the three elementary operations will not change the image of the row space of the matrix: given a row vector $\vec{v}$, $k\vec{v}$ will span the same (scalar multiplication), and switching the order of the rows won't change anything because the span of the row vectors will be the same (vectors will be in a different order). However, how would one show that adding/subtracting vectors does not change the row space?
832
.NET offers a generic list container whose performance is almost identical (see Performance of Arrays vs. Lists question). However they are quite different in initialization.   Arrays are very easy to initialize with a default value, and by definition they already have certain size:  string[] Ar = new string[10];   Which allows one to safely assign random items, say:  Ar[5]="hello";   with list things are more tricky. I can see two ways of doing the same initialization, neither of which is what you would call elegant:  List&lt;string&gt; L = new List&lt;string&gt;(10); for (int i=0;i&lt;10;i++) L.Add(null);   or  string[] Ar = new string[10]; List&lt;string&gt; L = new List&lt;string&gt;(Ar);   What would be a cleaner way?  EDIT: The answers so far refer to capacity, which is something else than pre-populating a list. For example, on a list just created with a capacity of 10, one cannot do L[2]="somevalue"  EDIT 2: People wonder why I want to use lists this way, as it is not the way they are intended to be used. I can see two reasons:   One could quite convincingly argue that lists are the "next generation" arrays, adding flexibility with almost no penalty. Therefore one should use them by default. I'm pointing out they might not be as easy to initialize. What I'm currently writing is a base class offering default functionality as part of a bigger framework. In the default functionality I offer, the size of the List is known in advanced and therefore I could have used an array. However, I want to offer any base class the chance to dynamically extend it and therefore I opt for a list.
107003
I'm working on a sparse matrix class that needs to use an array of LinkedList to store the values of a matrix. Each element of the array (i.e. each LinkedList) represents a row of the matrix. And, each element in the LinkedList array represents a column and the stored value.  In my class, I have a declaration of the array as:  private LinkedList&lt;IntegerNode&gt;[] myMatrix;   And, in my constructor for the SparseMatrix, I try to define:  myMatrix = new LinkedList&lt;IntegerNode&gt;[numRows];   The error I end up getting is     Cannot create a generic array of LinkedList&lt;IntegerNode&gt;.   So, I have two issues with this:   What am I doing wrong, and Why is the type acceptable in the declaration for the array if it can't be created?   IntegerNode is a class that I have created. And, all of my class files are packaged together.
117409
Let $A$, and $B$ be commuting $n\times n$ matrices, i.e. $A.B = B.A$. Let \begin{equation} \exp(A) = \sum_{i=0}^\infty\frac{1}{i!} A^i \end{equation} show that $\exp(A+B) = \exp(A).\exp(B)$. Edit: To those who choose to vote for closing of this question and similar ones as being a duplicate. I think the relative timing of the two questions are actually important! When there are two duplicate questions, I think it makes highly more sense to check the relative timings of the two questions and in general, tend to vote to closing of the question which is asked after (Interestingly, for this question, the duplicate is asked 5 years later than this one). Please note that if their research was done properly or the StackExchenge's duplicate detection worked perfectly at the time, they would not have been even able to post. Now by unnecessarily closing well attended questions of earlier contributors (here me) I am wondering what behavior is actually being rewarded?
42734
Let $A$ be an $n \times n$ matrix and let $\Lambda$ be an $n \times n$ diagonal matrix. Is it always the case that $A\Lambda = \Lambda A$? If not, when is it the case that $A \Lambda = \Lambda A$?  If we restrict the diagonal entries of $\Lambda$ to being the equal (i.e. $\Lambda = \text{drag}(a, a, \dots, a)$), then it is clear that $A\Lambda = AaI = aIA = \Lambda A$. However, I can't seem to come up with an argument for the general case.