好的......我需要遍历任意长度的字符串。由于我不知道如何解释得太好,我的意思是这样的:
def zip(string1,string1):
...
当使用"a"
和"ad"
进行调用时,它会返回一个列表:
>>>zip("a","ad")
["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","aa","ab","ac","ad"]
我尝试使用map(chr,range(ord('a'),ord('nb')+1))
,但我得到了TypeError: ord() expected a character, but string of length 2 found
,我不知道从哪里开始。有什么想法吗?
答案 0 :(得分:4)
那就是:
def zip_(start, end):
def __inc(s):
if not s:
return "a"
elif s[-1] != "z":
return s[:-1] + chr(ord(s[-1]) + 1)
else:
return __inc(s[:-1]) + "a"
s = start
yield s
while s != end:
s = __inc(s)
yield s
print list(zip_("a", "ad"))
一些评论:
zip
这个词作为变量或函数的名称,因为它已经被保留了。zip_
中是一个生成器。我这样做是为了不在内存中保留太多数据。如果您需要一个确切的列表,只需将其转换为我在print-statement中完成的。zip_("b", "a")
。但实际上,如果有必要,可以通过添加几行来轻松修复。答案 1 :(得分:1)
这是一个基数为26的数字系统,以下是我将如何解决它。而function getHostElement(el) {
while (el.parentNode) el = el.parentNode;
return getShadowRoot(el).host;
}
var element1 = document.createElement('element1');
var element2 = document.createElement('element2');
var element3 = document.createElement('element3');
element2.appendChild(element3);
var shadowRoot = element1.createShadowRoot();
shadowRoot.appendChild(element2);
getHostElement(element3); // element1
也是一个python内置函数,最好不要重新定义它。
zip