我有一个可变长度的字符串列表。我知道列表的最小长度是4.如果列表增长到4以上,如何以下列格式打印列表?
>>> strlist = ['a', 'b', 'c', 'd', 'f', 'g'] # Unknown length
>>> print ('%s %s %s %s' % (strlist [2], strlist [0], strlist [4], strlist [5]))
c a f g
如果列表扩展为
[..., 'h', 'i', 'j']
然后我希望输出
c a f g h i j
显然,如果列表扩展,我不能在我的打印功能中放入500“%s”,所以我希望有更好的方法。
答案 0 :(得分:4)
我会先根据需要转换列表,然后使用str.join()
:
>>> print (" ".join([strlist[2]] + [strlist[0]] + strlist[4:]))
c a f g h i j
根据您的具体要求(您的问题并不完全清楚),转换代码可能需要不同。然而,整体"变换然后加入"模式仍然适用。
答案 1 :(得分:-1)
如果格式化不是问题,那么这应该有效:
// My answer assumes there is a constructor like this.
public Cell(int i) {
listOfCells = new Cell[i];
}
public Cell deepCopy() {
return deepCopy(this, new IdentityHashMap<Cell, Cell>());
}
private static Cell deepCopy(Cell original, Map<Cell, Cell> map) {
if (original == null)
return null;
Cell copy = map.get(original);
if (copy != null)
return copy;
int length = original.listOfCells.length;
copy = new Cell(length);
map.put(original, copy);
for (int i = 0; i < length; i++)
copy.listOfCells[i] = deepCopy(original.listOfCells[i], map);
return copy;
}