mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			935 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			935 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
# A simple vector class
 | 
						|
 | 
						|
 | 
						|
def vec(*v):
 | 
						|
	return apply(Vec, v)
 | 
						|
 | 
						|
 | 
						|
class Vec:
 | 
						|
 | 
						|
	def __init__(self, *v):
 | 
						|
		self.v = []
 | 
						|
		for x in v:
 | 
						|
			self.v.append(x)
 | 
						|
 | 
						|
 | 
						|
	def fromlist(self, v):
 | 
						|
		self.v = []
 | 
						|
		if type(v) <> type([]):
 | 
						|
			raise TypeError
 | 
						|
		self.v = v[:]
 | 
						|
		return self
 | 
						|
 | 
						|
 | 
						|
	def __repr__(self):
 | 
						|
		return 'vec(' + `self.v`[1:-1] + ')'
 | 
						|
 | 
						|
	def __len__(self):
 | 
						|
		return len(self.v)
 | 
						|
 | 
						|
	def __getitem__(self, i):
 | 
						|
		return self.v[i]
 | 
						|
 | 
						|
	def __add__(a, b):
 | 
						|
		# Element-wise addition
 | 
						|
		v = []
 | 
						|
		for i in range(len(a)):
 | 
						|
			v.append(a[i] + b[i])
 | 
						|
		return Vec().fromlist(v)
 | 
						|
 | 
						|
	def __sub__(a, b):
 | 
						|
		# Element-wise subtraction
 | 
						|
		v = []
 | 
						|
		for i in range(len(a)):
 | 
						|
			v.append(a[i] - b[i])
 | 
						|
		return Vec().fromlist(v)
 | 
						|
 | 
						|
	def __mul__(self, scalar):
 | 
						|
		# Multiply by scalar
 | 
						|
		v = []
 | 
						|
		for i in range(len(self.v)):
 | 
						|
			v.append(self.v[i]*scalar)
 | 
						|
		return Vec().fromlist(v)
 | 
						|
 | 
						|
 | 
						|
 | 
						|
def test():
 | 
						|
	a = vec(1, 2, 3)
 | 
						|
	b = vec(3, 2, 1)
 | 
						|
	print a
 | 
						|
	print b
 | 
						|
	print a+b
 | 
						|
	print a*3.0
 | 
						|
 | 
						|
test()
 |