Привет, я хочу объединить подсписки в один список

#python-3.x #merge #sublist

#python-3.x #слияние #подсписок

Вопрос:

Проблема:

  1. найдите текст: [«X-DSPAM-Достоверность: 0,8475»]
  2. Извлеките 5 цифр (например: 0,8475) из следующей ссылки (текстовый файл):
  3. вычислите среднее значение без функции sum… https://www.py4e.com/code3/mbox-short.txt ?PHPSESSID=f3eb9b379b33fa412909c5123798b393

Попытка: пропустить любые строки, которые не начинаются с ‘X-DSPAM-Confidence:’ найдите ключевые слова и найдите 5-значные цифры, преобразуйте их в строку, а затем преобразуйте их в список с плавающей запятой, однако при попытке использовать цикл for он не суммировал все числа с плавающей запятой в списке. Я думаю, проблема в том, что python считает добавление 0 к каждой итерации в каждом списке, поэтому для решения этой проблемы мне нужно объединить подсписки в num1, но я не знаю никакого простого способа сделать это … (и это задание должно быть удобным для начинающих, поэтому я предполагаю, что не должно бытьнужен расширенный / сложный код на python?) Пожалуйста, помогите!

 fname = input("Enter file name: ")
fh = open(fname)
count = 0
for line in fh:
    if not line.startswith("X-DSPAM-Confidence:"):
        continue
    
    count = count 1
    findpos = line.find(':')
    #print(findpos, count)
    values = line[findpos 2:26]
    num = str(values).rstrip()
    num1 = [float(num)]
    add = 0
    for i in num1:
        add = i   add 
    print(type(num1), add)
    

print("Done")
 
 result:
Enter file name: mbox-short.txt
<class 'list'> 0.8475
<class 'list'> 0.6178
<class 'list'> 0.6961
<class 'list'> 0.7565
<class 'list'> 0.7626
<class 'list'> 0.7556
<class 'list'> 0.7002
<class 'list'> 0.7615
<class 'list'> 0.7601
<class 'list'> 0.7605
<class 'list'> 0.6959
<class 'list'> 0.7606
<class 'list'> 0.7559
<class 'list'> 0.7605
<class 'list'> 0.6932
<class 'list'> 0.7558
<class 'list'> 0.6526
<class 'list'> 0.6948
<class 'list'> 0.6528
<class 'list'> 0.7002
<class 'list'> 0.7554
<class 'list'> 0.6956
<class 'list'> 0.6959
<class 'list'> 0.7556
<class 'list'> 0.9846
<class 'list'> 0.8509
<class 'list'> 0.9907
Done

 

Комментарии:

1. Вам не нужно управлять списком, вам просто нужно суммировать все значения и отслеживать их количество.

2. спасибо, исправлено, проблема заключается в том, что числа не имеют надлежащего хранилища, поэтому, присваивая числа новой переменной, делает трюк, т. Е. if count is 1: num1=values И сделайте это для 27 чисел, теперь python может вычислять среднее значение!