需要一些python数组的解释
本文关键字:数组 解释 python | 更新日期: 2023-09-27 18:02:09
我正在将python算法转换为c#,我需要一些解释。所以我有这个列表的列表:
offsets2 = [[(0.1, 0.1), (0.5, 0.1), (0.9, 0.1), (1.1, 0.1)],
[(0.1, 0.5), (0.5, 0.5), (0.9, 0.5), (1.1, 0.5)],
[(0.1, 0.9), (0.5, 0.9), (0.9, 0.9), (1.1, 0.9)],
[(0.1, 1.0), (0.5, 1.0), (0.9, 1.0), (1.1, 1.0)]]
和this:
for offset in offsets2:
offset = [(int(x + lane.width * dx),
int(y + self.canvas.row_height * dy))
for dx, dy in offset]
我想知道dx和dy是什么?我猜是x和y,但只是想确定一下,并问一下如何在c#中获得它们
代码使用所谓的List Comprehension
。
大致翻译为:
for offset in offsets2:
_tmp = []
for dx, dy in offset:
_tmp.append((int(x + lane.width * dx),
int(y + self.canvas.row_height * dy))
offset = _tmp
offset
包含两个元组,表达式for dx, dy in offset
在迭代时解包这些元组。这就相当于:
for coord in offset:
if len(coord) != 2:
raise ValueError
dx = coord[0]
dy = coord[1]
...
你可以输入print语句来查找你想要的内容。
for offset in offsets2:
print offset
tmp = []
for dx, dy in offset:# for each pair (dx,dy) of offset
print dx, dy
newCoords = (int(x + lane.width * dx),
int(y + self.canvas.row_height * dy))
tmp.append(newCoords)
offset = tmp[:]
>>> [(0.1, 0.1), (0.5, 0.1), (0.9, 0.1), (1.1, 0.1)]
>>> 0.1, 0.1
>>> 0.5, 0.1
>>> 0.9, 0.1
....
>>> [(0.1, 0.5), (0.5, 0.5), (0.9, 0.5), (1.1, 0.5)]
>>> 0.1, 0.5
>>> 0.5, 0.5
>>> 0.9, 0.5
dx
和dy
只是临时变量,分配给列表中的每一组值。第一次迭代是dx=0.1, dy=0.1
,第二次是dx=0.5, dy=0.1
,等等