Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
索引列表以查找字符串中的重复字符(Python)_Python_String_List_Python 3.x_Indexing - Fatal编程技术网

索引列表以查找字符串中的重复字符(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:]]