如何使用 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"]
我想随机生成表情符号。我尝试了两种不同的方法,但仍然没有混合输出
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"]