Maison  >  Article  >  développement back-end  >  Écrivez un générateur Python pour générer un exemple de code du triangle de Yang Hui

Écrivez un générateur Python pour générer un exemple de code du triangle de Yang Hui

Y2J
Y2Joriginal
2017-04-26 11:20:382130parcourir

L'éditeur suivant vous proposera un article sur la façon de générer un triangle Yang Hui avec un générateur python (à lire absolument). L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'œil

Écrire des programmes intéressants en Python est tellement génial que je ne peux pas m'arrêter

#生成器生成展示杨辉三角
#原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' '
def yang(line):
  n,leng=0,2*line - 1
  f_list = list(range(leng+2)) #预先分配,insert初始胡会拖慢速度,最底下一行,左右也有1个空格
  #全部初始化为0
  for i,v in enumerate(f_list):
    f_list[v] = 0
  ZEROLIST = f_list[:] #预留一个全零的数组
  f_list[leng//2] = 1 #初始的第一行
  re_list =f_list[:]
  n=0
  while n < line:
    n = n+1
    yield re_list
    f_list,re_list = re_list[:],ZEROLIST[:]
    start = leng//2-n #计算一行中第一个1的位置
    end = start + 2*n #计算一行中最后一个1的位置
    while start <= end:
      re_list[start] = f_list[start - 1] + f_list[start+1] #不管是不是1,该位置的数字,都是上一行该位置的左右两个数的和
      start = start + 1
  return &#39;done&#39;

def printList(L):
  n = 0
  p_str = &#39;&#39;
  for value in L:
    ch = str(value)
    if value == 0:
      ch = &#39; &#39;
    p_str = p_str + ch
  print(p_str)

for value in yang(8):
  printList(value)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn