私信  •  关注

han solo

han solo 最近创建的主题
han solo 最近回复了

你可以做一个 list 理解来自 zip 就像,

>>> l
[1, 5, 6, 7, 2]
>>> [0] + [x+y for x,y in zip(l, l[1:])]
[0, 6, 11, 13, 9]

或者不是列表理解,而是像,

>>> [0, *(x+y for x,y in zip(l, l[1:]))]
[0, 6, 11, 13, 9]
4 年前
回复了 han solo 创建的主题 » 如果值是多数组,则使用键将值附加到python字典值

你需要创建新的 list s表示每个 key 就像,

>>> a = []
>>> b = [] 
>>> c = [] 
>>> d = [] 
>>> e = [] 
>>> f = []
>>> classifiers = [a,b,c,d,e,f]
>>> 
>>> 
>>> d = {k:[x[:] for x in classifiers] for k in range(2,11)} # note i am creating a copy using the `list[:]` notation.
# either the comprehension or `k: copy.deepcopy(classifiers)` is fine
>>> d
{2: [[], [], [], [], [], []], 3: [[], [], [], [], [], []], 4: [[], [], [], [], [], []], 5: [[], [], [], [], [], []], 6: [[], [], [], [], [], []], 7: [[], [], [], [], [], []], 8: [[], [], [], [], [], []], 9: [[], [], [], [], [], []], 10: [[], [], [], [], [], []]}
>>> d[2][0].append(1)
>>> d
{2: [[1], [], [], [], [], []], 3: [[], [], [], [], [], []], 4: [[], [], [], [], [], []], 5: [[], [], [], [], [], []], 6: [[], [], [], [], [], []], 7: [[], [], [], [], [], []], 8: [[], [], [], [], [], []], 9: [[], [], [], [], [], []], 10: [[], [], [], [], [], []]}

你只需要理解和 join 就像,

>>> x = 'foobar'
>>> ''.join(c.lower() if idx % 2 == 0 else c.upper() for idx, c in enumerate(x))
'fOoBaR'
>>> def myfunc(string):
...   return ''.join(c.lower() if idx % 2 == 0 else c.upper() for idx, c in enumerate(string))
... 
>>> myfunc('foobar')
'fOoBaR'
>>> 

还有,做事情的方式也很有趣:)[不要这样做]

>>> x
'foobar'
>>> # we can make use of slice awesomeness of iterables :)
>>> x[::2] # get the even parts
'foa'
>>> x[1::2] # get the odd parts
'obr'
>>> ''.join(a+b for a,b in zip(x[::2].lower(), x[1::2].upper()))
'fOoBaR'
5 年前
回复了 han solo 创建的主题 » 在python中如何根据索引和长度来无限字符串?

你可以使用 itertools 创造相似的东西

>>> import itertools
>>> x = itertools.islice(itertools.cycle("book"), 1,5)
>>> ''.join(x)
'ookb'
>>> x = itertools.islice(itertools.cycle("book"), 3,9)
>>> ''.join(x)
'kbookb'
>>> x = itertools.islice(itertools.cycle("book"), 3,10)
>>> ''.join(x)
'kbookbo'

根据@tobias_k处理负面指数的建议更新,

>>> def mkseq(string, index, length):
...   return ''.join(itertools.islice(itertools.cycle(string), index % len(string), index % len(string) + length))
... 
>>> mkseq("book", -3, 9)
'ookbookbo'