[Tutor] list output -- float output

spir denis.spir at free.fr
Fri Nov 14 14:59:15 CET 2008


[addendum]
Well, actually, the previous Seq didn't solve all problems. Obvious case of 
nested lists. Below a modified version.
denis

class Seq(list):
	''' specialized sequence type with improved str
		Override list's behaviour that str(list) calls repr instead of str on items:
			print 2.2, [2.2], seq([2.2]) -->
			2.2 [2.2000000000000002] [2.2]
		'''
	def __str__(self):
		if len(self) == 0:
			return '[]'
		text = str(self[0])
		for item in self[1:]:
			if isinstance(item, list):
				item = Seq(item)
			# will now call str on nested Seqs
			text += " ,%s" %item
		return "[%s]" %text

spir a écrit :
> Below an illustration of what troubles me a bit.
> denis
> 
> class Seq(list):
>     ''' specialized sequence type with improved str
>     Override list's behaviour that list.__str__
>     calls __repr__ instead of __str__ on items.
>     ???
>     '''
>     def __str__(self):
>         if len(self) == 0:
>             return '[]'
>         text = str(self[0])
>         for item in self[1:]:
>             text += " ,%s" %item
>         return "[%s]" %text
> 
> print 1.1, repr(1.1)
> print [1.1], Seq([1.1])
> ==>
> 1.1 1.1000000000000001
> [1.1000000000000001] [1.1]
> 
> # By the way, I do not understand at all the behaviour of repr on 
> rounded floats:
> x = round(1.1,1)
> print x, repr(x), "%s" %x
> 1.1 1.1000000000000001 1.1
> 
> ???
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 
> 




More information about the Tutor mailing list