因此,我有一个函数,它接受两个字符串输入-它将它们切分,这样如果长度为偶数,则前面部分的长度与后面部分的长度相同,如果长度为奇数,则中间字符将转到前面部分(即hello->;hel,lo)。然后混合并匹配两个字符串的前后段以生成最终输出。你知道吗
我希望能够在一个函数下完成这一切,而我想到的却是丑陋的:
def front_back(a, b):
if len(a) % 2 == 0:
front_a = a[:len(a)/2]
back_a = a[len(a)/2:]
elif len(a) % 2 != 0:
front_a = a[:(len(a)/2)+1]
back_a = a[(len(a)/2)+1:]
if len(b) % 2 == 0:
front_b = b[:len(b)/2]
back_b = b[len(b)/2:]
elif len(b) % 2 != 0:
front_b = b[:(len(b)/2)+1]
back_b = b[(len(b)/2)+1:]
print front_a + front_b + back_a + back_b
front_back('Kitten', 'Donut') ---> KitDontenut
有没有一种更优雅的方式?你知道吗
我不知道如何使用lambda(它们不能处理处理偶数和奇数长度情况所必需的if
语句。。。我想?)如果是这样的话。。。你知道吗
更新: 谢谢大家的建议。还有一个问题:
当我尝试使用lamdbas的一个版本时,基于一个建议(为了实践),我得到了一个没有定义全局名称的nameberror。我写lambda有什么问题?你知道吗
def front_back(a, b):
divideString = lambda s: s[:((1+len(s))//2)], s[((1+len(s))//2):]
a1, a2 = divideString(a)
b1, b2 = divideString(b)
print a1 + b1 + a2 + b2
front_back("hello","cookies")
你让事情变得比需要的更复杂:
通过在除以2(楼层划分)之前加1,可以将向上取整。你知道吗
演示:
你甚至可以在线切片:
相关问题 更多 >
编程相关推荐