索引列表以查找字符串中的重复字符(Python)
因此,我的程序要求用户输入一个字符串列表,然后对字符串进行排序,如果第一个字母在同一个字符串中再次重复,它会将其存储到另一个列表中。这是我到目前为止所拥有的索引列表以查找字符串中的重复字符(Python),python,string,list,python-3.x,indexing,Python,String,List,Python 3.x,Indexing,因此,我的程序要求用户输入一个字符串列表,然后对字符串进行排序,如果第一个字母在同一个字符串中再次重复,它会将其存储到另一个列表中。这是我到目前为止所拥有的 iput = [] i = 0 final = [] while i < 1: iput += [input('Enter words here: ')] if not iput[-1]: i += 1 i = 0 z = 1 while i < len(iput) - 1: prin
iput = []
i = 0
final = []
while i < 1:
iput += [input('Enter words here: ')]
if not iput[-1]:
i += 1
i = 0
z = 1
while i < len(iput) - 1:
print(i)
while iput[i][0] != iput[i][z]:
if z == len(iput[i]):
break
z += 1
i += 1
print(final)
print(iput)
iput=[]
i=0
最终=[]
而i<1:
iput+=[输入('在此处输入单词:')]
如果不是iput[-1]:
i+=1
i=0
z=1
而i
我一直收到一个“字符串索引超出范围”错误,无法想出一种方法来添加具有上述要求的字符串。有什么建议吗?您的
z
将增长到比iput
长度更长的值
当
z
达到iput
的长度时,您将中断内部循环,但从不在外部循环中重置它。您的代码将首先访问越界索引,然后检查索引是否越界。在访问越界索引之前先进行检查
while i < len(iput) - 1:
print(i)
while z != len(iput[i]) and iput[i][0] != iput[i][z]:
z += 1
i += 1
而i
因为您应该检查每个列表元素和所有元素,所以您应该每隔一段时间重置z
循环,以便添加:
z=1
结束while循环后:
while i < len(iput) - 1:
print(i)
while iput[i][0] != iput[i][z]:
if z == len(iput[i]):
break
z += 1
z = 1
i += 1
而i
这是关于z
变得太大:在循环中不断增加它,但在检查z
是否等于iput[i]
之前访问iput[i]
。一旦它相等,就太晚了:Python字符串索引是基于0的,这意味着您的z
最多可能变成len(iput[i])-1
虽然这是对代码中实际发生的情况的分析,但我要说的是,这段代码相当不和谐,因为它阐述了许多机械细节,为此类错误提供了机会。Python中有一些语言结构允许您更简洁(也更高效)地表达相同的内容
更具python风格,但不会让人想起您的算法:
final = [line for line in iput if line[0] in line[1:]]
你能更具体地谈谈你的问题吗?我真的不明白它是什么?该程序提示用户输入一个单词列表,并在列表中只存储第一个字母在单词其他地方出现的单词(例如,“狒狒”)。一旦用户输入空字符串,程序应打印列表中存储的元素,每行一个单词。
final = [line for line in iput if line[0] in line[1:]]