Im new to python and i need some help with this.
TASK : given a list --> words = ['aba', 'xyz', 'xgx', 'dssd', 'sdjh']
i need to compare the first and the last element of each string in the list, if the first and the last element in the string is the same , then increment the count.
Given list is :
words = ['aba', 'xyz', 'xgx', 'dssd', 'sdjh']
If i try manually, i can iterate over each element of the strings in the list.
words = ['aba', 'xyz', 'xgx', 'dssd', 'sdjh'] w1 = words[0] print w1 aba for i in w1: print i a b a if w1[0] == w1[len(w1) - 1]: c += 1 print c 1
But, When i try to iterate over all the elements of all the strings in the list , using a FOR loop.
i get an error.
words = ['aba', 'xyz', 'xgx', 'dssd', 'sdjh'] c = 0 for i in words: w1 = words[i] if w1[0] == w1[len(w1) - 1]: c += 1 print c
ERROR:
Traceback (most recent call last): File "<stdin>", line 2, in <module> TypeError: list indices must be integers, not str
please let me know, how would i achieve comparing the first and the last element of a no. strings in the list.
Thanks in advance.
We often want to perform the same operation on every element in a list, like displaying each element or manipulating them mathematically. To do that, we can use a loop to iterate over each element, repeating the same code for each element.
Try:
for word in words: if word[0] == word[-1]: c += 1 print c
for word in words
returns the items of words
, not the index. If you need the index sometime, try using enumerate
:
for idx, word in enumerate(words): print idx, word
would output
0, 'aba' 1, 'xyz' etc.
The -1
in word[-1]
above is Python's way of saying "the last element". word[-2]
would give you the second last element, and so on.
You can also use a generator to achieve this.
c = sum(1 for word in words if word[0] == word[-1])
The reason is that in your second example i
is the word itself, not the index of the word. So
for w1 in words: if w1[0] == w1[len(w1) - 1]: c += 1 print c
would the equivalent of your code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With