gpt4 book ai didi

python - 从两个不同大小的列表创建一个列表(元组?)

转载 作者:行者123 更新时间:2023-11-28 21:28:26 28 4
gpt4 key购买 nike

我一直在尝试执行此任务,在尝试时我不禁想到会有比我一直尝试的方式更好的编码方式。

我有一行文字和一个关键字。我想在每个列表中的每个字符下创建一个新列表。关键字将重复自身直到列表末尾。如果有任何非字母字符,则不会使用关键字字母。

例如:

Keyword="lemon"
Text="hi there!"

会导致

('lh', 'ei', ' ', 'mt' , 'oh', 'ne', 'lr', 'ee', '!')

有没有办法告诉 python 在循环中不断重复一个字符串,即不断重复柠檬的字母?

我是编码新手,如果没有很好地解释或看起来很奇怪,我很抱歉!

最佳答案

您将两个问题合二为一。第一个是:如何从字符串中删除非字母数字字符?您可以通过几种方式实现,但正则表达式替换是一种不错的方式。

import re

def removeWhitespace( s ):
return re.sub( '\s', '', s )

问题的第二部分是关于如何不断循环遍历关键字,直到文本行被消耗。你可以这样写:

def characterZip( keyword, textline ):
res = []
textline = removeWhitespace(textline)
textlen = len(textline)
for i in xrange(textlen)):
res.append( '%s%s' % (keyword[i%len(keyword)], textline[i]) )
return res

大多数 pythonista 都会看到这一点并看到重构的机会。此代码试图实现的模式在函数式编程中称为 zip。奇怪的是,在这种情况下,您对关键字的重复字符做了一些稍微不规范的事情,这也有一个等价物,cycle。 itertools 模块中的函数。

from itertools import cycle, islice, izip

def characterZip( keyword, textline ):
textline = removeWhitespace(textline)
textlen = len(textline)
it = islice( izip(cycle(keyword), textline), textlen )
return [ '%s%s' % val for val in it ]

关于python - 从两个不同大小的列表创建一个列表(元组?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275650/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com