如何使用 python 随机排列和打印表情符号列表?

How to shuffle and print a list of emoji using python?

我想随机生成表情符号。我尝试了两种不同的方法,但仍然没有混合输出

import random

soleillever ="\U0001f305"
Soleildodo = "\U0001f634"
nuage = '\u2601'
soleilnuage = "\U0001f326"
nuageeclair = "\U0001f329"
rainbow = '\U0001f308'
termo = '\U0001F321'
soleil = '\U0001f31e'
soleil2 = "\U0001f31d"
nuageeclairpluie = "\u26C8"
flocon = "\u2744"
print(soleil,soleil2,termo,rainbow,nuageeclair,soleilnuage,nuage,flocon)


a =[rainbow + nuageeclair + soleilnuage + nuage + soleil2 + nuageeclairpluie + flocon + rainbow]
b = random.sample(a, k=len(a))
print(b)


a1 = [rainbow + nuageeclair + soleilnuage + nuage + soleil2 + nuageeclairpluie + flocon + rainbow]
b1 = random.shuffle(a1)
print(b1)

这是类型为

的输出
['☁⛈❄']
 Here is b <class 'list'>

B1 gives me None
Here is b1<class 'NoneType'>

如果有人有建议,我将不胜感激! B.

您的代码中似乎有两个错误。第一个是 random.shuffle 应用洗牌 in-place.

根据我的评论,random.shuffle 没有 return 任何东西。因此,当您将 b1 分配给由 random.shuffle 编辑的值 return 时,它被设置为空,即 None 您可以想象该函数看起来像这样:

def shuffle(input):
   # do something to input

而不是

def shuffle(input):
   # do something to input
   return input

对于您的情况,如果您执行以下操作,它应该会起作用。

# normal, un-shuffled list
print(a1)
random.shuffle(a1)
print(a1) # same array, but now it has been shuffled

第二个问题是您使用 + 操作创建 a1 作为字符串列表。结果,这实质上创建了一个包含在列表中而不是字符串列表中的字符串。区别如下:

lst0 = ['hello'] 
random.shuffle(lst0) # returns ['hello']

lst1 = ['h'+'e'+'l'+'l'+'o'] # this is identical to lst0
random.shuffle(lst1) # returns ['hello']

lst2 = ['h','e','l','l','o']
random.shuffle(lst2) # returns ['o', 'h', 'l', 'e', 'l']

对于您的情况,请尝试使用逗号而不是 +。即:

a1 = [rainbow , nuageeclair , soleilnuage , nuage , soleil2 , nuageeclairpluie , flocon , rainbow]

或直接

a1 = ["\U0001f305","\U0001f634",'\u2601',"\U0001f326","\U0001f329",'\U0001f308','\U0001F321','\U0001f31e',"\U0001f31d","\u26C8","\u2744"]