我有两个字符串包含了工作日的“位图”:例如,1------
是星期一,--3-5--
是星期三和星期五,你明白了。你知道吗
我想用逻辑OR的等价物将它们合并在一起,例如1------
| --3-5--
=1-3-5--
。做这件事最像Python的方法是什么?我现在正在做这个,但感觉不是特别优雅:
week1, week2, merged = '1------', '--3-5--', ''
for i in range(0, len(week1)):
merged += week1[i] if week1[i] != '-' else week2[i]
print merged
请注意,我使用的是Python2.7,因此没有可变字符串,并且可以安全地假设输入字符串的格式总是正确的(=总是使用-
表示false,1..7
表示true)。你知道吗
使用^{} 、generator expression和conditional expression:
您可以使用内置的
map
、max
和zip
:这是因为:
zip
返回每个字符串中第n个字符的元组[('1', '-'), ('-'. '-'), ... ]
max
从元组返回-
,当且仅当所有条目都是-
。这是因为-
的排序低于数字字符,例如max('1', '-') == '1'
。map
将max
应用于压缩列表中的每个元组,生成一个包含最多字符的列表。''.join
使用空字符串将使用map
生成的最大字符列表链接在一起。如果您有两周以上的字符串,则此表达式也适用:
您可以将其推广到一个可工作任意数周的函数,例如:
或者对整个hog启用所有按位操作,例如:
相关问题 更多 >
编程相关推荐