1 # Copyright 2016 The TensorFlow Authors. All Rights Reserved. 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 # ============================================================================== 15 """A typed list in Python.""" 16 17 from __future__ import absolute_import 18 from __future__ import division 19 from __future__ import print_function 20 21 from tensorflow.python.ops import list_ops 22 23 24 class TensorList(object): 25 """Tensor list wrapper API-compatible with Python built-in list.""" 26 27 def __init__(self, shape, dtype): 28 self.dtype = dtype 29 self.shape = shape 30 self.clear() 31 32 def append(self, value): 33 self.list_ = list_ops.tensor_list_push_back(self.list_, value) 34 35 def pop(self): 36 self.list_, value = list_ops.tensor_list_pop_back(self.list_, self.dtype) 37 return value 38 39 def clear(self): 40 self.list_ = list_ops.empty_tensor_list(self.shape, self.dtype) 41 42 def count(self): 43 return list_ops.tensor_list_length(self.list_) 44 45 def __getitem__(self, key): 46 return list_ops.tensor_list_get_item(self.list_, key, self.dtype) 47 48 def __setitem__(self, key, value): 49 self.list_ = list_ops.tensor_list_set_item(self.list_, key, value) 50