MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Table constructed from two lists

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123762] Re: Table constructed from two lists
  • From: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>
  • Date: Sat, 17 Dec 2011 02:50:20 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jcf8dv$6us$1@smc.vnet.net>

On Fri, 16 Dec 2011 11:01:19 -0000, Alan Forrester <af17g11 at gmail.com>  
wrote:

> Hello
>
> I'd like to construct a table by making each element of the table a
> function of elements of a couple of lists I have specified, but I'm
> getting an error message that seems not to make any sense.
>
> So I have a couple of lists, like these
> list1 = {1,2,3}
> list2 = {4,5,6}
>
> My code for the table I want to construct from those lists is a bit
> like this:
> Tplus = [list1[i]+list2[i], {i, Range[Length[list1]]}].
>
> The error I get claims that i is not an integer or a list of integers,
> but Range[Length[list1]] is a list of integers.
>
> I would appreciate any ideas on what I'm doing wrong.
>
> Alan Forrester
>

A bit like that, maybe, but not too much, since your example looks more  
like a list comprehension as used in other languages (but not in  
Mathematica).

Simply correcting the syntax, one could write

Tplus = Table[list1[[i]]+list2[[i]], {i, Range@Length[list1]}]

where double square brackets represent part indexing. But iterating over  
the elements is not necessary since many functions in Mathematica are  
automatically aware of tensor inputs (somewhat like APL). So instead one  
can write:

Tplus = list1 + list2

or for that matter

Tcos = list1 Cos[list2]
Tpow = list1^list2

etc.

To find out whether a function can be used in this way, check to see if it  
has the Attribute Listable:

MemberQ[Attributes[Plus], Listable] (* = True *)
MemberQ[Attributes[Times], Listable] (* = True *)
MemberQ[Attributes[Cos], Listable] (* = True *)
MemberQ[Attributes[Power], Listable] (* = True *)

and so forth.



  • Prev by Date: Re: Table constructed from two lists
  • Next by Date: Re: Elementary Document Formatting Questions
  • Previous by thread: Re: Table constructed from two lists
  • Next by thread: Mathematica LogPlot Bug