我正在使用Turtle随机路径生成器处理python。我有一只乌龟在飞机上起作用,从 (function(){
angular
.module('myApp',[])
.controller('myCtrl', Controller);
Controller.$inject = ['$rootScope', '$scope'];
function Controller($rootScope, $scope){
activate();
/**
* @method activate
* @description function to be called when controller is activate
*/
function activate(){
$scope.sectionHeader = 'Activities';
$scope.sectionUndecoratedList = [
{'activites':'demo'},
{'activites':'3'},
{'activites':'test'},
{'activites':'1'}
]
var reg = new RegExp('^[0-9]$');
for (var i = 0; i < $scope.sectionUndecoratedList.length; i++) {
var a = $scope.sectionUndecoratedList[i];
if(reg.test(a.activites)){
a.isNumber = true;
}
}
}
}
})();
北,南,东或西的单位移动,直到它碰到一个边界。我不希望它在相同的坐标上运行两次,所以我运行它我在列表中添加过去的坐标,它会增长如下:10px
然后[0, 0]
然后[0, 0, 10, 0]
我的问题是我如何比较列表中的项目,如[0, 0, 10, 0, 10, -10]
等,因为我目前的方法是将(0, 0) (10, 0) (10, -10)
和x
保存在两个单独的列表中,这样就无法继续整个轴。这是我的code。
答案 0 :(得分:1)
简短回答:
next_coordinate = [10, 10]
if next_coordinate not in [[visited[2*i], visited[2*i+1]] for i in range(len(visited) / 2)]:
# make step...
但是,我认为您可以更好地存储访问点。例如,元组列表:
[(0, 0), (10, 0), (10, -10)]
或者使用二维矩阵。
矩阵使用O(n*n)
内存。它具有快速查找功能,但需要更多内存。
列表使用内存与访问坐标对的数量成比例,如果您需要存储大量的点,这可能会节省大量内存。
答案 1 :(得分:0)
您可能需要创建一个班级职位并将职位列入名单
class Position(object):
def __init__(self, x,y):
self.x= x
self.y= y
my_moves = []
for i in range(100):
my_moves.append(Position(i*10,y*10))
# to get your moves
for obj in my_moves:
print obj.x + "," obj.y
答案 2 :(得分:0)
如果要从xys
坐标列表切换到元组列表,可以使用zip
和列表理解:
>>> xys = [0, 0, 10, 0, 10, -10]
>>> [xy for xy in zip(xys[::2], xys[1::2])]
[(0, 0), (10, 0), (10, -10)]
如果您想快速检查某个点是否已被访问过,您可以保留一组元组:
>>> already_visited = set(xy for xy in zip(xys[::2], xys[1::2]))
>>> (10,0) in already_visited
True
>>> (10,10) in already_visited
False