简体   繁体   中英

Reference next Item in List

I am working through a program that requires me to determine if a list of strings is a word chain. A word chain is a list of words in which the last letter of a word is the first letter of the next word in the last . The program is to return True if the list is a word chain, and false otherwise. My code is as follows:

def is_word_chain(word_list):
    for i in word_list:
        if i[-1] == (i+1[0]):
            result = True
        else:
            result = False 
    return result

and it returns the following error:

SyntaxWarning: 'int' object is not subscriptable; perhaps you missed a comma?
  if i[-1] == (i+1[0]):
Traceback (most recent call last):
  if i[-1] == (i+1[0]):
TypeError: 'int' object is not subscriptable

I am wondering how I would properly reference the next item in the list in order to execute this function.

Given:

>>> li1=['word','chain','test','test']
>>> li2=['word','chain','test']

You can use zip to get a pair of words to test:

>>> list(zip(li1,li1[1:]))
[('word', 'chain'), ('chain', 'test'), ('test', 'test')]

Once you have that, you can return True or False like so:

>>> any(t[0][-1]==t[1][0] for t in zip(li1,li1[1:]))
True

>>> any(t[0][-1]==t[1][0] for t in zip(li2,li2[1:]))
False

Fixed it:)

def is_word_chain(word_list):
    for i in range(len(word_list)-1):
        if word_list[i][-1] == word_list[i+1][0]:
            result = True
        else:
            result = False 
            break
    return result

print(is_word_chain(['apple', 'egg', 'grapes', 'sand']))
print(is_word_chain(['apple', 'egg', 'sand', 'grapes']))
def is_word_chain(word_list):
for i in range(0,len(word_list)-1):
    if word_list[i][-1] == word_list[i+1][0]:
        result = True
    else:
        result = False 
return result

in your code you iterate through strings and in if condition you are trying use that string as sort of list which is technically blunder here.

use range and iterate over word_chain as list.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM