В Python, как я создаю строку n символов в одной строке кода?

Нет, это похоже рекомендуемый путь для вычисления размера каталога, соответствующий метод, включенный ниже:

public static long DirSize(DirectoryInfo d) 
{    
    long size = 0;    
    // Add file sizes.
    FileInfo[] fis = d.GetFiles();
    foreach (FileInfo fi in fis) 
    {      
        size += fi.Length;    
    }
    // Add subdirectory sizes.
    DirectoryInfo[] dis = d.GetDirectories();
    foreach (DirectoryInfo di in dis) 
    {
        size += DirSize(di);   
    }
    return size;  
}

Вы звонили бы с корнем как:

Console.WriteLine("The size is {0} bytes.", DirSize(new DirectoryInfo(targetFolder));

..., где targetFolder размер папки для вычисления.

128
задан Jon Seigel 4 May 2010 в 00:44
поделиться

5 ответов

Чтобы просто повторить одну и ту же букву 10 раз:

string_val = "x" * 10  # gives you "xxxxxxxxxx"

И если вам нужно что-то более сложное, например n случайные строчные буквы, это все равно всего одна строка кода ( без учета операторов импорта и определения n ):

from random import choice
from string import ascii_lowercase
n = 10

string_val = "".join(choice(ascii_lowercase) for i in range(n))
278
ответ дан 24 November 2019 в 00:36
поделиться

Первые десять строчных букв - это строка.lowercase [: 10] (конечно, если вы ранее импортировали стандартный библиотечный модуль строка ; -).

Другие способы «сделать строку из 10 символов»: 'x' * 10 (все десять символов будут строчными x s ;-), ''. Join (chr (ord ('a') + i) for i in xrange (10)) (снова первые десять строчных букв) и т. Д .; -).

9
ответ дан 24 November 2019 в 00:36
поделиться

, если вам нужны любые буквы:

 'a'*10  # gives 'aaaaaaaaaa'

, если вам нужны последовательные буквы (до 26):

 ''.join(['%c' % x for x in range(97, 97+10)])  # gives 'abcdefghij'
4
ответ дан 24 November 2019 в 00:36
поделиться

Почему «одна строка»? Вы можете поместить что угодно в одну строку.

Предположим, вы хотите, чтобы они начинались с 'a' и каждый раз увеличивались на один символ (с переносом> 26), вот строка:

>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
3
ответ дан 24 November 2019 в 00:36
поделиться

Если вы можете использовать повторяющиеся буквы, вы можете использовать оператор * :

>>> 'a'*5

'aaaaa'
2
ответ дан 24 November 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: