So I have this list of strings. They all of the strings have a 18 capital letters.
I want to assign each letter a value and them sum up the total score.

window=['SALHWRAAGAATVLLVIVL', 'ALHWRAAGAATVLLVIVLL', 'LHWRAAGAATVLLVIVLLA', 'HWRAAGAATVLLVIVLLAG', 'WRAAGAATVLLVIVLLAGS', 'RAAGAATVLLVIVLLAGSY', 'AAGAATVLLVIVLLAGSYL', 'AGAATVLLVIVLLAGSYLA', 'GAATVLLVIVLLAGSYLAV', 'AATVLLVIVLLAGSYLAVL', 'ATVLLVIVLLAGSYLAVLA', 'TVLLVIVLLAGSYLAVLAE', 'VLLVIVLLAGSYLAVLAER', 'LLVIVLLAGSYLAVLAERG', 'LVIVLLAGSYLAVLAERGA', 'VIVLLAGSYLAVLAERGAP', 'IVLLAGSYLAVLAERGAPG', 'VLLAGSYLAVLAERGAPGA', 'LLAGSYLAVLAERGAPGAQ', 'LAGSYLAVLAERGAPGAQL', 'AGSYLAVLAERGAPGAQLI', 'GSYLAVLAERGAPGAQLIT', 'SYLAVLAERGAPGAQLITY', 'YLAVLAERGAPGAQLITYP', 'LAVLAERGAPGAQLITYPR', 'AVLAERGAPGAQLITYPRA', 'VLAERGAPGAQLITYPRAL', 'LAERGAPGAQLITYPRALW', 'AERGAPGAQLITYPRALWW', 'ERGAPGAQLITYPRALWWS', 'RGAPGAQLITYPRALWWSV', 'GAPGAQLITYPRALWWSVE', 'APGAQLITYPRALWWSVET', 'PGAQLITYPRALWWSVETA', 'GAQLITYPRALWWSVETAT', 'AQLITYPRALWWSVETATT', 'QLITYPRALWWSVETATTV', 'LITYPRALWWSVETATTVG', 'ITYPRALWWSVETATTVGY', 'TYPRALWWSVETATTVGYG', 'YPRALWWSVETATTVGYGD', 'PRALWWSVETATTVGYGDL', 'RALWWSVETATTVGYGDLY', 'ALWWSVETATTVGYGDLYP', 'LWWSVETATTVGYGDLYPV', 'WWSVETATTVGYGDLYPVT', 'WSVETATTVGYGDLYPVTL', 'SVETATTVGYGDLYPVTLW', 'VETATTVGYGDLYPVTLWG', 'ETATTVGYGDLYPVTLWGR', 'TATTVGYGDLYPVTLWGRC', 'ATTVGYGDLYPVTLWGRCV', 'TTVGYGDLYPVTLWGRCVA', 'TVGYGDLYPVTLWGRCVAV', 'VGYGDLYPVTLWGRCVAVV', 'GYGDLYPVTLWGRCVAVVV', 'YGDLYPVTLWGRCVAVVVM', 'GDLYPVTLWGRCVAVVVMV', 'DLYPVTLWGRCVAVVVMVA', 'LYPVTLWGRCVAVVVMVAG', 'YPVTLWGRCVAVVVMVAGI', 'PVTLWGRCVAVVVMVAGIT', 'VTLWGRCVAVVVMVAGITS', 'TLWGRCVAVVVMVAGITSF', 'LWGRCVAVVVMVAGITSFG', 'WGRCVAVVVMVAGITSFGL', 'GRCVAVVVMVAGITSFGLV', 'RCVAVVVMVAGITSFGLVT', 'CVAVVVMVAGITSFGLVTA', 'VAVVVMVAGITSFGLVTAA', 'AVVVMVAGITSFGLVTAAL', 'VVVMVAGITSFGLVTAALA', 'VVMVAGITSFGLVTAALAT', 'VMVAGITSFGLVTAALATW', 'MVAGITSFGLVTAALATWF', 'VAGITSFGLVTAALATWFV', 'AGITSFGLVTAALATWFVG', 'GITSFGLVTAALATWFVGR', 'ITSFGLVTAALATWFVGRE', 'TSFGLVTAALATWFVGREQ', 'SFGLVTAALATWFVGREQE', 'FGLVTAALATWFVGREQER', 'GLVTAALATWFVGREQERR', 'LVTAALATWFVGREQERRG', 'VTAALATWFVGREQERRGH']

Any ideas on how I could do this?

Dani AI

Generated

wants a numeric score per letter and the grand total over a list of windows; 's nested-sum is the straightforward mathematical view, but it repeats Python work. First, validate the data: check that every string contains only the characters you expect and that your score map covers all letters (or choose a default). If the sample windows are actually sliding excerpts from one long sequence, that suggests additional optimizations.

A fast, clear way to get the grand total is to count each letter once and then take the dot product with the score map. This turns O(total_chars) work into a single pass plus a tiny combine step:

from collections import Counter
from itertools import chain

# example score map — replace with your actual values
scores = {'A':1, 'B':2, 'C':3, 'D':4}

# 'seqs' is your list of window strings
counts = Counter(chain.from_iterable(seqs))   # one pass over all characters
total = sum(counts[ch] * scores.get(ch, 0) for ch in counts)

If you need each window's score individually and the windows are produced by sliding one position at a time, compute the first window fully and update incrementally (subtract outgoing char, add incoming char). That makes each subsequent window O(1) after the initial O(window_size):

# seq = long sequence, wlen = window length, score = dict of letter->value
s = sum(score[ch] for ch in seq[:wlen])
total = s
for i in range(1, len(seq)-wlen+1):
    s += score[seq[i+wlen-1]] - score[seq[i-1]]
    total += s

Quick tips: use scores.get(ch, 0) (or raise an error) to handle unknown letters; for very large data replace dict lookups with an ord-indexed list (26 entries) for speed; counts.most_common() helps debug unexpected letters.

Suppose you have a score function that gives score to each letter.
So the score of all the windows is:
sum(sum(score(c) for c in w) for w in window)

commented: That's a nice-looking one liner. +1
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.