Simple Python Debugging with Pdb: Part 2 - Comments

  • Context: Python 
  • Thread starter Thread starter Mark44
  • Start date Start date
  • Tags Tags
    Debugging Python
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 3K views
Messages
38,138
Reaction score
10,725
Mark44 submitted a new PF Insights post

Simple Python Debugging with Pdb: Part 2

pythondebug2-80x80.png


Continue reading the Original PF Insights Post.
 
  • Like
Likes   Reactions: Greg Bernhardt
Physics news on Phys.org
Greg Bernhardt said:
Mark, how would you compare Python with other similar languages?
Python is in some respects similar to C, but is a language that is significantly higher in level. Without using any external libraries/modules, you can get permutations and combinations very quickly.

A couple of the features of Python that distinguish it from C and the languages that derive from C are the map() function and list comprehension. map() returns an iterator that will apply some operator to one or more lists (depending on the operator). In the example below, corresponding pairs of numbers are multiplied in two lists to form a new list that contains these products, and then the sum() function is applied to the list to add all of the numbers. In short, the one-line body of the dotprod() function calculates the dot product of the two lists that are in its argument list. Lower-level languages such as C will typically use a for loop to iterate through the lists.
Python:
# dotprod.py -- find the dot product of two vectors
import operator

def dotprod(u, v):
   return sum(map(operator.mul, u, v))

u = [1, 2, -1, 4, 2, 1, -2, 6]
v = [1, 4, -1, 0, 1, 1, -2, 4]

ans = dotprod(u, v)
print("Result is: ", ans)
This code displays 41 as its result.

List comprehension is "A compact way to process all or part of the elements in a sequence and return a list with the results."
Here's an example that works with the list [0, 1, ..., 255] and creates a new list with only the list elements that are evenly divisible by 16.
Python:
#list_comp.py -- simple example of list comprehension
my_list = [x for x in range(256) if x % 16 == 0]
print(my_list)
The print() statement displays the list as [0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240]

I'm sure there are quite a few more differences, but these are just a few that come to mind.
 
  • Like
Likes   Reactions: Greg Bernhardt